You are not allowed to perform this action

عملگر‌ها و عبارات

زبان C مجموعه‌ای از عملگر‌ها را در اختیار ما می‌گذارد. همچنین رفتار هر عملگر وقتی که روی عملوند‌ها اعمال می‌شوند، تعریف شده است. یک عبارت متشکل از یک یا چند عملوند است. ساده ترین عبارت می‌تواند یک متغیر باشد و یا یک مقدار ثابت. حاصل چنین عبارتی برای با مقدار متغیر یا مقدار ثابت می‌باشد. عبارات پیچیده‌تر را می‌توان به کمک عملگر‌ها و تعدادی عملوند ساخت، مانند: ''b * b - 4 * a * c''. =====عملگر تخصیص===== این عملگر برای تخصیص حاصل یک عبارت به‌یک خانه از حافظه می‌باشد. در سمت چپ عملگر مساوی که به آن LHS یا Left-Hand Side گفته می‌شود باید یک خانه از حافظه را مشخص کرد. به طور معمول LHS نام یک متغیر می‌باشد. RHS نیز باید یک عبارت باشد. پس از اجرای دستور مقدار عبارت RHS در حافظه‌ی LHS ذخیره می‌شود. <code cpp> int a, b, c; a = 3; b = 4; c = a * a; c = c + b * b; </code> در مثال بالا اگر ''a'' و ''b'' طول دو ضلع قائم یک مثلث قائم الزاویه باشند، در ''c'' طول وتر آن مثلث را حساب کرده‌‌ایم. حاصل عملگر ''='' برابر با RHS می‌باشد. این عملگر وقتی به صورت متوالی استفاده شود، از راست به چپ محاسبه می‌شود. <code cpp> int x, y, z; x = y = z = 5; // این عبارت معادل است با x = (y = (z = 5))) </code> =====عملگر‌های حسابی===== پنج عملگر حسابی در ++C تعریف شده‌اند. ^ عملگر ^ توضیح ^

y += x;

|

y = y + x;

| |

x -= 5;

|

x = x - 5;

| |

x /= y;

|

 x = x / y;

| |

price *= units + 1;

|

price = price * (units+1);

| =====کاهش و افزایش===== بعضی از عبارات را می‌توان خلاصه‌تر نوشت. عملگر کاهش () و عملگر افزایش (++) مقدار یک متغیر را یک واحد کاهش یا افرایش می‌دهند. این عملگر‌ها به ترتیب معادل 1=- و 1=+ هستند. به دو مثال زیر توجه کنید:

x = 3;
y = x++;
// x is 4 and y is 3
x = 3;
y = ++x;
// x is 4 and y is 4

در دو مثال بالا مقدار نهایی y متفاوت است. در صورتی که عملگر کاهش یا افزایش بعد از متغیر بیاید، حاصل عبارت برابر با مقدار اولیه‌ی متغیر می‌شود، ولی در صورتی که این عملگر‌ها قبل از متغیر استفاده شوند، حاصل عبارت برابر با مقدار تغییر کرده‌ی متغیر می‌شود. =====عملگر‌های مقایسه===== عملگر‌های مقایسه در صورت برقراری رابطه‌ای بین LHS و RHS مقدار true و در غیر این صورت مقدار false را بر می‌گردانند. ^ عملگر ^ توضیح ^ |

LHS == RHS

| اگر LHS با RHS برابر باشد | |

LHS != RHS

| اگر LHS با RHS فرق کند | |

LHS < RHS

| اگر LHS کوچکتر از RHS باشد | |

LHS > RHS

| اگر LHS بزرگتر از RHS باشد | |

LHS <= RHS

| اگر LHS کوچکتر از یا مساوی با RHS باشد | |

LHS >= RHS

| اگر LHS بزرگتر یا مساوی با RHS باشد | به مثال زیر توجه کنید.

bool a = 1 == 2;
// a is false
 
bool b = a == false;
// b is true
 
bool c = a < b;
// c is true
 
bool d = 4 - 1 <= 3;
// d is true
 
bool e = 3 * 4 == 2 * 6;
// e is true
 
bool f = 2 + 3 * 5 == (2 + 3) * 5;
// f is false

توجه کنید که حاصل عملگر‌های مقایسه از نوع bool می‌باشد. =====عملگر‌های منطقی===== سه عملگر منطقی زیر برای ترکیب شرط‌ها و نوشتن عبارات شرطی پیچیده‌تر وجود دارند. ^ عملگر ^ توضیح ^ |

LHS && RHS

| اگر LHS و RHS هر دو true باشند | |

LHS || RHS

| اگر دست کم یکی از LHS و RHS مقدارش true باشد | |

!RHS

| مقدار نقیض RHS (این عملگر یک ورودی دارد) | به مثال زیر توجه کنید.

bool a = 2 < 3;
// a is true
 
bool b = 2 > 3;
// b is true
 
bool c = a && b;
// c is false
 
bool d = a || b;
// d is true
 
bool e = !c;
// e is true
 
bool f = e && d;
// f is true

=====عملگر‌ شرطی===== این عملگر از سه بخش تشکیل شده است.

condition ? result1 : result2 

بخش اول یک عبارت شرطی condition است که اگر درست باشد، حاصل عبارت برابر با result1 می‌شود و در غیر این صورت حاصل عبارت برابر با result2 می‌شود. به مثال زیر توجه کنید.

int x = 5;
 
bool odd = x % 2 != 0? true: false;
// odd is true
 
bool even = x % 2 == 0? true: false;
// even is false
 
int sign = x < 0? -1: x > 0? 1: 0;
// sign is 1
 
int a = 4;
int b = 3;
 
int minimum = a < b? a: b;
// minimum is 3

می‌توان عملگر شرطی را به صورت زنجیره‌ای از چند شرط به کار برد. =====عملگر‌های بیتی===== عملگر‌های بیتی بر حسب الگوی بیت‌های نشان دهنده‌ی ورودی‌هایشان، خروجی‌ای با بیت‌های تغییر یافته تولید می‌کنند. با مثال زیر و رجوع به بهش عملگر‌های منطقی می‌توانید کارکرد دقیق این عملگر‌ها حدس بزنید.

int a = 60;            //  60 = 0011 1100  
int b = 13;            //  13 = 0000 1101
int c = 0;           
 
c = a & b;             //  12 = 0000 1100
 
c = a | b;             //  61 = 0011 1101
 
c = a ^ b;             //  49 = 0011 0001
 
c = ~a;                // -61 = 1100 0011
 
c = a << 2;            // 240 = 1111 0000
 
c = a >> 2;            //  15 = 0000 1111

برای مطالعه‌ی بیشتر به صفحه‌ی عملیات بیتی در ویکی‌پدیا مراجعه کنید. =====عملگر‌ تبدیل نوع===== با این عملگر می‌توان نوع یک مقدار را تبدیل به نوعی دیگر کرد. این عملگر با نوشتن نوع مقصد در یک جفت پرانتز و نوشتن مقدار مبدا پس از آن، استفاده می‌شود. به مثال زیر توجه کنید.

int i;
double d = 3.14;
i = (int) f;
// i is 3
 
int a1 = 0;
bool b1 = (bool) a1;
// b1 is false
 
int a2 = -5;
bool b2 = (bool) a2;
// b2 is true

پیشنهاد می‌شود تبدیل‌های مقادیر مختلف را با نوشتن قطعه کد‌هایی به شکل بالا آزمایش کنید و به صورت تجربی یاد بگیرید.