制約 %演算子のオペランドは,整数型をもたなければならない。
意味規則 通常の算術型変換をオペランドに適用する。
(snip) %演算子の結果は剰余とする。(snip) 第2オペランドの値が0の場合,その動作は未定義とする。
*乗算演算子や/除算演算子は算術型のオペランドに適用できるが,%演算子は整数型にしか適用できない。もし浮動小数型の剰余を求めたいならばfmod, fmodf, fmodlを使うことができる。
未定義動作を引き起こさないために,第2オペランドが0ではないことを保証する必要がある。
#include <stdio.h> int main(void){ int operand1, operand2; if (scanf("%d%d", &operand1, &operand2) != 2){ return 1; } if (operand2){ printf("%d %% %d = %d\n", operand1, operand2, operand1%operand2); } }
98765 43210
98765 % 43210 = 12345