عملگرها در زبان C
عملگر نمادی است که به کامپایلر می گوید تا یک عملیات ریاضی یا منطقی را انجام دهد. در زبان برنامه نویسی C مجموعه غنی از عملگرهای پیش ساخته وجود دارد که به صورت زیر دسته بندی شده است.
انواع عملگرها در زبان C
- عملگرهای ریاضی
- عملگرهای رابطه ای
- عملگرهای منطقی
- عملگرهای بیتی
- عملگرهای انتساب
- عملگرهای متفرقه
در این آموزش عملگرهای بالا را بررسی خواهیم کرد.
عملگرهای ریاضی
در جدول زیر عملگرهای ریاضی پشتیبانی شده در زبان C را مشاهده می کنید. فرض کنید متغیر A مقدار ۱۰ و متغیر B مقدار ۲۰ در خود ذخیره کرده است:
عملگر | توضیحات | مثال |
+ | برای جمع دو مقدار استفاده می شود. | A + B = 30 |
– | مقدار عملوند راست را از مقدار عملوند چپ کم می کند. | A – B = -10 |
* | برای ضرب دو مقدار استفاده می شود. | A * B = 200 |
/ | مقدار عملوند راست را بر مقدار عملوند چپ تقسیم می کند. | B / A = 2 |
% | مقدار عملوند راست را بر مقدار عملوند چپ تقسیم می کند و باقیمانده را بر می گرداند | B % A = 0 |
++ | یک واحد به مقدار قبلی اضافه می کند. | A++ = 11 |
— | یک واحد از مقدار قبلی کم می کند. | A– = 9 |
برای مشاهده نحوه استفاده از عملگرهای ریاضی در زبان C به آموزش مربوطه مراجعه کنید.
عملگرهای رابطه ای
در جدول زیر عملگرهای رابطه ای پشتیبانی شده در زبان C را مشاهده می کنید. فرض کنید متغیر A مقدار ۱۰ و متغیر B مقدار ۲۰ در خود ذخیره کرده است:
عملگر | توضیحات | مثال |
== | اگر مقادیر دو عملوند با هم برابر باشد، شرط درست است. | (A == B) is not true. |
!= | اگر مقادیر دو عملوند با هم برابر نباشد، شرط درست است. | (A != B) is true. |
> | اگر مقدار عملوند سمت چپ از مقدار عملوند سمت راست بزرگتر باشد، شرط درست است. | (A > B) is not true. |
< | اگر مقدار عملوند سمت چپ از مقدار عملوند سمت راست کوچکتر باشد، شرط درست است. | (A < B) is true. |
>= | اگر مقدار عملوند سمت چپ بزرگتر یا مساوی مقدار عملوند سمت راست باشد، شرط درست است. | (A >= B) is not true. |
<= | اگر مقدار عملوند سمت چپ کمتر یا مساوی مقدار عملوند سمت راست باشد، شرط درست است. | (A <= B) is true. |
برای مشاهده نحوه استفاده از عملگرهای رابطه ای در زبان C به آموزش مربوطه مراجعه کنید.
عملگرهای منطقی
در جدول زیر عملگرهای منطقی پشتیبانی شده در زبان C را مشاهده می کنید. فرض کنید متغیر A مقدار true و متغیر B مقدار false در خود ذخیره کرده است:
عملگر | توضیحات | مثال |
&& | عملگر AND (و منطقی) اگر هر دو عملوند true باشند نتیجه شرط نیز true خواهد بود. | (A && B) is false. |
|| | عملگر OR (یا منطقی) اگر فقط یکی از دو عملوند true باشند نتیجه شرط نیز true خواهد بود. | (A || B) is true. |
! | عملگر NOT (نقیض منطقی) وضعیت منطقی عملوند را برعکس می کند (یعنی اگر true باشد، آن را false می کند و بلعکس). | !(A && B) is true. |
برای مشاهده نحوه استفاده از عملگرهای منطقی در زبان C به آموزش مربوطه مراجعه کنید.
عملگرهای بیتی
از عملگرهای بیتی برای دستکاری بیت ها استفاده می شود. در زیر جدول درستی را برای عملگر های &، | و ^ مشاهده می کنید:
p | q | p & q | p | q | p ^ q |
۰ | ۰ | ۰ | ۰ | ۰ |
۰ | ۱ | ۰ | ۱ | ۱ |
۱ | ۱ | ۱ | ۱ | ۰ |
۱ | ۰ | ۰ | ۱ | ۱ |
فرض کنید A = 60 و B = 13 باشد، آنگاه فرمت باینری آن ها به صورت زیر خواهد بود:
A=00111100 B=00001101 ------------------- A&B=00001100 A|B=00111101 A^B=00110001 ~A =11000011 |
در جدول زیر عملگرهای بیتی پشتیبانی شده در زبان C را مشاهده می کنید. فرض کنید متغیر A مقدار ۶۰ و متغیر B مقدار ۱۳ در خود ذخیره کرده است:
عملگر | توضیحات | مثال |
& | اگر هر دو عملوند true باشند، یک بیت در نتیجه کپی می کند. | (A & B) = 12 که برابر است با ۰۰۰۰ ۱۱۰۰ |
| | اگر یکی از عملوندها true باشند، یک بیت در نتیجه کپی می کند. | (A | B) = 61 که برابر است با ۰۰۱۱ ۱۱۰۱ |
^ | اگر مقدار هر دو عملوند یکسان نباشد (یعنی هر دو true یا هر دو false نباشند)، یک بیت در نتیجه کپی می کند. | (A ^ B) = 41که برابر است با ۰۰۱۱ ۰۰۰۱ |
~ | عملگر یکانی نقیض می باشد و کارش این است که هر جا ۱ بود ۰ و هر جا ۰ بود ۱ می گذارد. | (~A ) = 61 که برابر است با ۱۱۰۰ ۰۰۱۱ |
<< | مقدار عملوند چپ را به مقدار بیت های تعیین شده در عملوند راست، به چپ شیفت می دهد. | A << 2 = 240 که برابر است با ۱۱۱۱ ۰۰۰۰ |
>> | مقدار عملوند چپ را به مقدار بیت های تعیین شده در عملوند راست، به راست شیفت می دهد. | A >> 2 = 15 که برابر است با ۰۰۰۰ ۱۱۱۱ |
برای مشاهده نحوه استفاده از عملگرهای بیتی در زبان C به آموزش مربوطه مراجعه کنید.
عملگرهای انتساب
در جدول زیر عملگرهای انتساب پشتیبانی شده در زبان C را مشاهده می کنید:
عملگر | توضیحات | مثال |
= | مقدار عملوند سمت راست را در عملوند سمت چپ قرار می دهد. | C = A + B نتیجه جمع دو متغیر A و B را در متغیر C قرار می دهد. |
+= | مقدار عملوند سمت راست را با مقدار عملوند سمت چپ جمع کرده و نتیجه را در عملوند سمت چپ قرار می دهد. | C += A معادل C = C + A |
-= | مقدار عملوند سمت راست را با مقدار عملوند سمت چپ کم کرده و نتیجه را در عملوند سمت چپ قرار می دهد. | C -= A معادل C = C – A |
*= | مقدار عملوند سمت راست را با مقدار عملوند سمت چپ ضرب کرده و نتیجه را در عملوند سمت چپ قرار می دهد. | C *= A معادل C = C * A |
/= | مقدار عملوند سمت چپ را بر مقدار عملوند سمت راست تقسیم کرده و نتیجه را در عملوند سمت چپ قرار می دهد. | C /= A معادل C = C / A |
%= | مقدار دو عملوند را بر هم تقسیم کرده و باقیمانده را در عملوند سمت چپ قرار می دهد. | C %= A معادل C = C % A |
<<= | عملگر انتساب شیفت به چپ | C <<= 2 معادل C = C << 2 |
>>= | عملگر انتساب شیفت به راست | C >>= 2 معادل C = C >> 2 |
&= | عملگر AND بیتی | C &= 2 معادل C = C & 2 |
^= | عملگر انتساب exclusive OR بیتی | C ^= 2 معادل C = C ^ 2 |
|= | عملگر انتساب inclusive OR بیتی | C |= 2 معادل C = C | 2 |
برای مشاهده نحوه استفاده از عملگرهای انتساب در زبان C به آموزش مربوطه مراجعه کنید.
عملگرهای متفرقه
در جدول زیر سایر عملگرهای مهمی که در زبان C پشتیبانی می شوند را مشاهده می کنید:
عملگر | توضیحات | مثال |
sizeof() | اندازه نوع داده را برمی گرداند | sizeof(int) مقدار ۴ برمی گرداند. |
& | آدرس یک متغیر را برمی گرداند | &a; آدرس واقعی یک متغیر را برمی گرداند. |
* | اشاره به یک متغیر | *a; یک اشاره گر به نام ‘a’ به متغیر a ایجاد می کند. |
? : | عبارت شرطی | اگر شرط درست باشد ؟ مقدار X : در غیر این صورت Y |
برای مشاهده نحوه استفاده از عملگرهای متفرقه در زبان C به آموزش مربوطه مراجعه کنید.
تقدم عملگرها در C
در جدول زیر تقدم عملگرهای موجود در زبان برنامه نویسی C را مشاهده می کنید.
دسته بندی | عملگرها | ترتیب |
پسوندی | () [] -> . ++ – – | از چپ به راست |
یگانی | + – ! ~ ++ – – (type)* & sizeof | از راست به چپ |
ضربی | * / % | از چپ به راست |
افزودنی | + – | از چپ به راست |
شیفت | << >> | از چپ به راست |
رابطه ای | < <= > >= | از چپ به راست |
برابری | == != | از چپ به راست |
AND بیتی | & | از چپ به راست |
XOR بیتی | ^ | از چپ به راست |
OR بیتی | | | از چپ به راست |
AND منطقی | && | از چپ به راست |
OR منطقی | || | از چپ به راست |
شرطی | ?: | از راست به چپ |
انتسابی | = += -= *= /= %=>>= <<= &= ^= |= | از راست به چپ |
کاما | , | از چپ به راست |
برای مشاهده نحوه استفاده از تقدم عملگرها در زبان C به آموزش مربوطه مراجعه کنید.