اولویت عملگرها
آشنایی با اولویت عملگرها در C++ و نحوه ارزیابی عبارات
اولویت عملگرها
اولویت عملگرها (Operator Precedence) تعیین میکند که کدام عملگر اول ارزیابی شود.
جدول اولویت عملگرها
از بالا به پایین (بالاترین اولویت در بالا)
| اولویت | عملگر | توضیح |
|---|---|---|
| 1 | () [] -> . ++ -- | پرانتز، آرایه، عضو، افزایش/کاهش |
| 2 | ! ~ ++ -- + - * & sizeof | یگانی (Unary) |
| 3 | * / % | ضرب، تقسیم، باقیمانده |
| 4 | + - | جمع، تفریق |
| 5 | << >> | شیفت |
| 6 | < <= > >= | مقایسه |
| 7 | == != | برابری |
| 8 | & | AND بیتی |
| 9 | ^ | XOR بیتی |
| 10 | | | OR بیتی |
| 11 | && | AND منطقی |
| 12 | || | OR منطقی |
| 13 | ?: | شرطی |
| 14 | = += -= *= /= %= | انتساب |
| 15 | , | کاما |
مثالهای اولویت
مثال 1
int result = 5 + 3 * 2;
// اول ضرب: 3 * 2 = 6
// بعد جمع: 5 + 6 = 11
// result = 11
مثال 2
int result = (5 + 3) * 2;
// اول پرانتز: 5 + 3 = 8
// بعد ضرب: 8 * 2 = 16
// result = 16
مثال 3
bool result = 5 > 3 && 2 < 4;
// اول مقایسهها: 5 > 3 = true, 2 < 4 = true
// بعد AND: true && true = true
// result = true
استفاده از پرانتز
همیشه از پرانتز برای وضوح استفاده کنید، حتی اگر لازم نباشد.
// بدون پرانتز (سخت خواندن)
int x = a + b * c - d / e;
// با پرانتز (آسان خواندن)
int x = a + (b * c) - (d / e);
ارتباطپذیری (Associativity)
وقتی عملگرها اولویت یکسان دارند، ارتباطپذیری تعیین میکند کدام اول ارزیابی شود.
ارتباطپذیری چپ به راست
int x = 10 - 5 - 2;
// (10 - 5) - 2 = 3
ارتباطپذیری راست به چپ
int x = 5;
int y = x *= 2 += 3;
// y = (x *= (2 += 3))
بهترین شیوهها
- همیشه از پرانتز استفاده کنید
- کد را خوانا بنویسید
- از عبارات پیچیده خودداری کنید
نکات مهم
- پرانتز بالاترین اولویت را دارد
- عملگرهای یکسانی از چپ به راست ارزیابی میشوند
- استفاده از پرانتز خوانایی را افزایش میدهد
این مبحث بخشی از دوره آموزش کامل C++ است.