C89 中以下每个表达式的值是多少? (如果表达式可能有多个值,请给出所有可能的值。)
a) 8/5
My answer 1
b) -8/5
A : -1
c)8/-5
A: -1
d)-8/-5
A:1
e)8 % -5
Answer: output is 3 but why?
Also,are the other answers correct?
最佳答案
b)、c) 和 e) 的结果是实现定义的,因为带有负操作数的整数除法舍入方向在 c89 中是实现定义的。在 c99 中,四舍五入为零,但在 c89 中,它是实现定义的。
例如:
-8/5
结果可以是-1
(向零截断)或-2
(向负无穷大截断)。
与 8/-5
相同。
8 % -5
结果可以是 3
(向零截断)或 -2
(向负无穷大截断)。
关于C 编程找到 C89 的输出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17879012/