1个回答
展开全部
这个描述的不准确.
对于最早的C89/C90标准,确实是取决于编译器的.
而C99已经对此做规定了.
除法时, 商向零靠近取整 即-22/5 = -4 22/-5=-4
模除时, 如果 % 左边的操作数是正数,则模除的结果为正数或零;如果 % 左边的操作数是负数,则模除的结果为负数或零。
即 22%-5=2
-22%5=-2
对于最早的C89/C90标准,确实是取决于编译器的.
而C99已经对此做规定了.
除法时, 商向零靠近取整 即-22/5 = -4 22/-5=-4
模除时, 如果 % 左边的操作数是正数,则模除的结果为正数或零;如果 % 左边的操作数是负数,则模除的结果为负数或零。
即 22%-5=2
-22%5=-2
追问
如果按之前的标准,为什么-22%5(22% -5 )余数是-2或3(2或-3)
追答
所以 对于模除定义, 只要写作
a=b*n+c的形式,且c的绝对值小于b的绝对值,那么c都可以视作a除以b的余数.
而
-22 = 5*-4 + -2 = 5*-5 +3
由于没有规定模除的符号, 所以 -2和3都是符合余数定义的.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询