简单说...
21/-5在数学上等于-4.2...
21/5在数学上等于4.2
C语言规定...除号两边是int类型的时候,结果也要是int...所以必须截断小数部分...
但是C语言没有规定是如何截断...
如果按照向大一的整数取整...
21/-5=-4
21/5=5(此时21%5=-4的)
如果按小一的整数取整...
21/-5=-5(此时21%-5=4的)
21/5=4
在这里,大多数编译器采用的是向0取整...所以
21/-5=-4
21/5=4
我这里说楼主问的问题是没有答案的原因就在于此...
虽然多数编译器是向0取整的...但是你无可预料客户的编译器是什么...(这也是软件测试的一个环节...兼容性测试)
所以编代码的时候必须注意编译器不同所造成的结果差异...
楼主还是个新手...你这么告诉他21%-5一定是1,我觉得是害他...
对于这个问题...我觉得我说到这里就行了...我不知道我什么地方触动了你...你会怒气冲冲的回帖"你列举一个商是-3的编译器,我到没见过"
21/-5在数学上等于-4.2...
21/5在数学上等于4.2
C语言规定...除号两边是int类型的时候,结果也要是int...所以必须截断小数部分...
但是C语言没有规定是如何截断...
如果按照向大一的整数取整...
21/-5=-4
21/5=5(此时21%5=-4的)
如果按小一的整数取整...
21/-5=-5(此时21%-5=4的)
21/5=4
在这里,大多数编译器采用的是向0取整...所以
21/-5=-4
21/5=4
我这里说楼主问的问题是没有答案的原因就在于此...
虽然多数编译器是向0取整的...但是你无可预料客户的编译器是什么...(这也是软件测试的一个环节...兼容性测试)
所以编代码的时候必须注意编译器不同所造成的结果差异...
楼主还是个新手...你这么告诉他21%-5一定是1,我觉得是害他...
对于这个问题...我觉得我说到这里就行了...我不知道我什么地方触动了你...你会怒气冲冲的回帖"你列举一个商是-3的编译器,我到没见过"
我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...