عملگرهای حسابی دودویی (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) ارزیابی میشن.
جدول ۲.۱ در انتهای این فصل، درجهی تقدم و جهت ارزیابی همهی عملگرها رو خلاصه کرده.