可能重复:
C++ 运算符 % 保证
在 C++ 98/03 中
5.6-4
二元 / 运算符产生商,二元 % 运算符产生第一个表达式除以第二个表达式的余数。如果 / 或 % 的第二个操作数为零,则行为未定义;否则 (a/b)*b + a%b 等于 a。如果两个操作数都是非负数,则余数是非负数;如果不是,则余数的符号是 implementation-defined。
在 C++ 11 中:
5.6 -4
二元 / 运算符产生商,二元 % 运算符产生第一个表达式除以第二个表达式的余数。如果 / 或 % 的第二个操作数为零,则行为未定义。对于整数操作数,/ 运算符产生代数商,其中任何小数部分被丢弃;81 如果商 a/b 可以用结果类型表示,则 (a/b)*b + a%b 等于 a。
如您所见,缺少为符号位定义的实现,它会发生什么?