Yas*_*hem 8 c rounding integer-division c89 ansi-c
例如,
如果我写
int var;
var=-8/-5;
Run Code Online (Sandbox Code Playgroud)
根据运算符优先级,-8/-5将等效于((-8)/( - 5)).但C89是否有可能给出两个值,例如-8/5的情况,它可以给出-1或-2.或者它会把它当作两个正整数的划分?
问题是参考KNKing的书(C编程现代方法)
C89规定如果任一操作数为负数,则除法的结果可以向上或向下舍入.
C89-3.3.5:
如果任一操作数为负,则
/运算符的结果是小于代数商的最大整数还是大于代数商的最小整数是实现定义的,这是%运算符结果的符号.如果商a/b可表示,则表达式(a/b)*b + a%b应相等a.
例如,在-8/5的情况下; 输出可以是-1((-8)/5)或-2(-(8/5)).
在C99中,保证被截断为0.
在你的情况下,操作数都是-ve和输出将是+ ve数(在这种情况下为1或2).