آموزش عملگرها در برنامه نویسی C
در این آموزش به کمک مثال های مختلف با عملگرهای مختلف در برنامه نویسی C آشنا خواهید شد.
عملگر نمادی است که روی مقادیر یا متغیرها (عملوند) اعمال می شود. به عنوان مثال: عملگر + برای عملیات جمع استفاده می شود.
در زبان C عملگرهای زیادی برای انجام عملیات مختلف وجود دارد.
عملگرهای حسابی در C
یک عملگر حسابی عملیات ریاضی مانند جمع، تفریق، ضرب، تقسیم و … را روی مقادیر عددی (ثابت ها و متغیرها) انجام می دهد.
معنی | عملگر ریاضی |
---|---|
جمع یا مثبت یگانی | + |
تفریق یا منفی یگانی | – |
ضرب | * |
تقسیم | / |
باقیمانده تقسیم | % |
مثال ۱: عملگرهای حسابی
// کار با عملگرهای ریاضی
#include <stdio.h>
int main()
{
int a = 9,b = 4, c;
c = a+b;
printf(“a+b = %d n”,c);
c = a-b;
printf(“a-b = %d n”,c);
c = a*b;
printf(“a*b = %d n”,c);
c = a/b;
printf(“a/b = %d n”,c);
c = a%b;
printf(“Remainder when a divided by b = %d n”,c);
return 0;
}
خروجی
a+b = 13
a-b = 5
a*b = 36
a/b = 2
Remainder when a divided by b=1
عملگرهای +، – و * همانطور که انتظار داشتید عملیات جمع، تفریق و ضرب را انجام می دهند.
در محاسبه طبیعی، ۹/۴ = ۲٫۲۵ اما اینجا خروجی ۲ است. دلیلش این است که هر دو متغیر a و b از نوع عدد صحیح int هستند در نتیجه خروجی محاسبات نیز یک عدد صحیح خواهد بود. کامپایلر بعد از نقطه (قسمت اعشاری) را نادیده می گیرد و ۲ را به جای ۲٫۲۵ نشان می دهد.
عملگر % باقیمانده تقسیم را محاسبه می کند. باقیمانده تقسیم a = 9 به b = 4 برابر با ۱ است. این عملگر فقط با اعداد صحیح استفاده می شود.
فرض کنید a = 5.0 ، b = 2.0، c = 5 و d = 2. پس در برنامه نویسی C:
// در اینجا حداقل یکی از عملوندها اعشاری است
a/b = 2.5
a/d = 2.5
c/b = 2.5
// هر دو عملوند عدد صحیح هستند
c/d = 2
عملگرها افزایش و کاهشی در C
در برنامه نویسی C دو عملگر افزایشی ++ و کاهشی — وجود دارد. عملگر ++ مقدار عملوند (ثابت یا متغیر) را به اندازه یک واحد افزایش می دهد در حالیکه — مقدار را یکی کمتر می کند. این عملگرها از نوع عملگرهای یگانی (unary) می باشند یعنی فقط روی یک عملوند اعمال می شوند.
مثال ۲: عملگرهای افزایشی و کاهشی
// کار با عملگرهای افزایشی و کاهشی
#include <stdio.h>
int main()
{
int a = 10, b = 100;
float c = 10.5, d = 100.5;
printf(“++a = %d n”, ++a);
printf(“–b = %d n”, –b);
printf(“++c = %f n”, ++c);
printf(“–d = %f n”, –d);
return 0;
}
خروجی
++a = 11
–b = 99
++c = 11.500000
–d = 99.500000
در اینجا عملگرهای ++ و — به عنوان پیشوند استفاده شده اند. می توان از آنها به عنوان پسوند نیز استفاده کرد؛ مانند a++و a–.
در این حالت ابتدا مقدار متغیر برگشت داده می شود سپس یک واحد تغییر می کند، برعکس در حالت پیشوند ابتدا مقدار متغیر تغییر می کند سپس آن را برمی گرداند. مثال،
//کار با عملگرهای افزایشی و کاهشی به عنوان پسوند
#include <stdio.h>
int main()
{
int a = 10, b = 100;
float c = 10.5, d = 100.5;
printf(“a++ = %d n”, a++);
printf(“a = %d n”, a);
printf(“b– = %d n”, b–);
printf(“b = %d n”, b);
printf(“c++ = %f n”, c++);
printf(“c = %f n”, c);
printf(“d– = %f n”, d–);
printf(“d = %f n”, d);
return 0;
}
خروجی
a++ = 10
a = 11
b– = 100
b = 99
c++ = 10.500000
c = 11.500000
d– = 100.500000
d = 99.500000
عملگرهای انتساب در C
عملگر انتساب برای انتساب یا اختصاص یک مقدار به یک متغیر استفاده می شود. رایجترین عملگر انتساب عملگر = است.
مشابه با | مثال | عملگر انتساب |
---|---|---|
a = b |
a = b | = |
a = a+b | a += b | += |
a = a-b | a -= b | -= |
a = a*b | a *= b | *= |
a = a/b | a /= b | /= |
a = a%b | a %= b | %= |
مثال ۳: عملگرهای انتساب
// کار با عملگرهای انتساب
#include <stdio.h>
int main()
{
int a = 5, c;
c = a; // 5
printf(“c = %dn”, c);
c += a; // 10
printf(“c = %dn”, c);
c -= a; // 5
printf(“c = %dn”, c);
c *= a; // 25
printf(“c = %dn”, c);
c /= a; // 5
printf(“c = %dn”, c);
c %= a; // 0
printf(“c = %dn”, c);
return 0;
}
خروجی
c = 5
c = 10
c = 5
c = 25
c = 5
c = 0
عملگرهای رابطه ای در C
یک عملگر رابطه ای برای بررسی رابطه بین دو عملوند استفاده می شود. اگر رابطه درست باشد، مقدار ۱ را برمیگرداند و اگر نادرست باشد، مقدار ۰ را برمیگرداند.
از عملگرهای رابطه ای در تصمیم گیری ها و حلقه ها استفاده می شود.
مثال | توضیح | عملگر رابطه ای |
---|---|---|
۵ == ۳ نادرست است و ۰ برمیگرداند. | مساوی با | == |
۵ > 3 درست است و ۱ برمیگرداند. | بزرگتر از | > |
۵ < 3 نادرست است و ۰ برمیگرداند. | کوچکتر از | < |
۵ != ۳ درست است و ۱ برمیگرداند. | نامساوی | != |
۵ >= 3 درست است و ۱ برمیگرداند. | بزرگتر یا مساوی | >= |
۵ <= 3 نادرست است و ۰ برمیگرداند. | کوچکتر یا مساوی | <= |
مثال ۴: عملگرهای رابطه ای
// کار با عملگرهای رابطه ای
#include <stdio.h>
int main()
{
int a = 5, b = 5, c = 10;
printf(“%d == %d is %d n”, a, b, a == b);
printf(“%d == %d is %d n”, a, c, a == c);
printf(“%d > %d is %d n”, a, b, a > b);
printf(“%d > %d is %d n”, a, c, a > c);
printf(“%d < %d is %d n”, a, b, a < b);
printf(“%d < %d is %d n”, a, c, a < c);
printf(“%d != %d is %d n”, a, b, a != b);
printf(“%d != %d is %d n”, a, c, a != c);
printf(“%d >= %d is %d n”, a, b, a >= b);
printf(“%d >= %d is %d n”, a, c, a >= c);
printf(“%d <= %d is %d n”, a, b, a <= b);
printf(“%d <= %d is %d n”, a, c, a <= c);
return 0;
}
خروجی
۵ == ۵ is 1
۵ == ۱۰ is 0
۵ > 5 is 0
۵ > 10 is 0
۵ < 5 is 0
۵ < 10 is 1
۵ != ۵ is 0
۵ != ۱۰ is 1
۵ >= 5 is 1
۵ >= 10 is 0
۵ <= 5 is 1
۵ <= 10 is 1
عملگرهای منطقی در C
یک عبارت شامل عملگر منطقی براساس درست یا غلط بودن آن، مقدار ۰ یا ۱ برمی گرداند. در برنامه نویسی C از عملگرهای منطقی معمولاً برای تصمیم گیری ها استفاده می شود.
مثال | توضیح | عملگر |
---|---|---|
اگر c = 5, d = 2 باشد آنگاه عبارت
((c==5) && (d>5)) نادرست است و ۰ برمیگرداند. |
AND منطقی (“و”).
اگر همه عملوندها درست باشند، عبارت درست است. |
&& |
اگر c = 5, d = 2 باشد آنگاه عبارت
((c==5) || (d>5)) درست است و ۱ برمیگرداند. |
OR منطقی (“یا”).
اگر حداقل یکی از عملوندها درست باشد، عبارت درست است. |
|| |
اگر c = 5 باشد آنگاه عبارت
(c==5)! نادرست است و ۰ برمیگرداند. |
NOT منطقی (“مخالف”).
اگر عملوند نادرست باشد، عبارت درست است. |
! |
مثال ۵: اپراتورهای منطقی
// کار با عملگرهای منطقی
#include <stdio.h>
int main()
{
int a = 5, b = 5, c = 10, result;
result = (a == b) && (c > b);
printf(“(a == b) && (c > b) is %d n”, result);
result = (a == b) && (c < b);
printf(“(a == b) && (c < b) is %d n”, result);
result = (a == b) || (c < b);
printf(“(a == b) || (c < b) is %d n”, result);
result = (a != b) || (c < b);
printf(“(a != b) || (c < b) is %d n”, result);
result = !(a != b);
printf(“!(a != b) is %d n”, result);
result = !(a == b);
printf(“!(a == b) is %d n”, result);
return 0;
}
خروجی
(a == b) && (c > b) is 1
(a == b) && (c < b) is 0
(a == b) || (c < b) is 1
(a != b) || (c < b) is 0
!(a != b) is 1
!(a == b) is 0
توضیح برنامه عملگر منطقی
- (a == b) && (c < b) درست ارزیابی می شود زیرا هر دو عملوند درست هستند.
- (a == b) && (c < b) نادرست ارزیابی می شود زیرا عملوند (c < b) نادرست است.
- (a == b) || (c < b) درست ارزیابی می شود زیرا عملوند (a = b) درست است.
- (a != b) || (c < b) نادرست ارزیابی می شود زیرا هر دو عملوند نادرست هستند.
- (a != b)! درست ارزیابی می شود زیرا عملوند (a != b) نادرست است در نتیجه مخالف آن یعنی (a != b)! درست است.
- (a == b)! نادرست ارزیابی می شود. زیرا عملوند (a == b) درست است در نتیجه مخالف آن یعنی(a == b)! نادرست است.
عملگرهای بیتی در C
در طی محاسبات، عملیات ریاضی مانند: جمع، تفریق، ضرب، تقسیم و .. در سطح بیتی انجام می شوند. این باعث می شود تا سرعت پردازش بیشتر شده و در مصرف انرژی نیز صرفه جویی می شود.
در برنامه نویسی C از عملگرهای بیتی (Bitwise) برای انجام عملیات سطح بیت استفاده می شود.
توضیحات | عملگر بیتی |
---|---|
AND بیتی | & |
OR بیتی | | |
XOR بیتی | ^ |
NOT بیتی | ~ |
شیفت چپ | << |
شیفت راست | >> |
سایر عملگرها
عملگر کاما
عملگر کاما برای اتصال عبارت های مرتبط به یکدیگر استفاده می شوند. مثال:
int a, c = 5, d;
عملگر sizeof
sizeof یک عملگر یگانی است که اندازه داده (ثابت ها، متغیرها، آرایه، ساختار و …) را برمی گرداند.
مثال ۶: اندازه sizeof
#include <stdio.h>
int main()
{
int a;
float b;
double c;
char d;
printf(“Size of int=%lu bytesn”,sizeof(a));
printf(“Size of float=%lu bytesn”,sizeof(b));
printf(“Size of double=%lu bytesn”,sizeof(c));
printf(“Size of char=%lu byten”,sizeof(d));
return 0;
}
خروجی
Size of int = 4 bytes
Size of float = 4 bytes
Size of double = 8 bytes
Size of char = 1 byte
درباره سایر عملگرها مانند عملگر سه گانه ?:، عملگر ارجاع &، عملگر اشاره به متغیر * و عملگر انتخاب عضو -> در آموزش های بعدی بحث خواهیم کرد.