可以分为以下4种情况来讨论:注意a,b都为整数,编译环境为VS2010。
1)相同类型%运算
1-1)a为正整数,b也为正整数
1-2)a为负整数,b也为负整数
2)不同类型%运算
2-1)a为负整数,b为正整数
2-2)a为正整数,b为负整数
结论:
参见下面一篇博文,内容有修改
C语言中规定,%运算符的两个操作数必须同为整数类型,这个很好理解,平时用%也是这么运算的,问题是如果这两个操作数异号,那么最后的计算结果该以哪个操作数的符号为准呢?C99标准中规定,若有a,b两个整型数据作取模运算,则它们必须满足以下等式:
(a / b) * b + a % b == a;
从这个等式可以看出,(a / b) * b运算结果的符号一定取决于a,而在C语言中又规定,两个整数相除,如果不能整除,那么结果的小数部分的处理应该向0靠近;综合以上所有要求,如果两个异号整数进行取模运算,那么结果的符号应该与被除数a相同,而除数b的符号对结果不产生影响。
————————————————
版权声明:本文为CSDN博主「C_HelloWorld」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/C_HelloWorld/article/details/6842856