background codoloper

عملگرهای حسابی Arithmetic Operators

عملگرهای حسابی دودویی (binary) در زبان C اینا هستن:
+, -, *, /, و عملگر باقیمانده یا Modulus یعنی %.

در تقسیم عددی بین اعداد صحیح (integer division)، بخش اعشاری حذف می‌شه.
عبارت:

 
x % y

باقیمانده‌ی تقسیم x بر y رو تولید می‌کنه، و وقتی x دقیقاً بر y بخش‌پذیر باشه، نتیجه‌اش صفر می‌شه.

برای مثال، یه سال کبیسه (leap year) هست اگه بر ۴ بخش‌پذیر باشه ولی بر ۱۰۰ نباشه،
مگر اینکه بر ۴۰۰ هم بخش‌پذیر باشه — که در اون صورت باز هم کبیسه حساب می‌شه.

پس کدش می‌تونه این‌طوری باشه:

 
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
    printf("%d is a leap year\n", year);
else
    printf("%d is not a leap year\n", year);

🔹 عملگر % فقط برای اعداد صحیح کاربرد داره و نمی‌تونه روی float یا double استفاده بشه.

🔹 جهت حذف بخش اعشاری در / و علامت نتیجه‌ی عمل % برای عملوندهای منفی، بستگی به ماشین (سیستم) داره — همین‌طور رفتار در صورت سرریز (overflow) یا زیرریز (underflow) هم به پیاده‌سازی وابسته‌ست.

🔹 عملگرهای دودویی + و - درجه‌ی تقدم (precedence) یکسانی دارن،
که پایین‌تر از درجه‌ی تقدم عملگرهای *, / و % هست،
و اینا هم خودشون پایین‌تر از عملگرهای یگانی (unary) یعنی + و - هستن.

عملگرهای حسابی از چپ به راست (left to right) ارزیابی می‌شن.

جدول ۲.۱ در انتهای این فصل، درجه‌ی تقدم و جهت ارزیابی همه‌ی عملگرها رو خلاصه کرده.