C 编程找到 C89 的输出吗?

标签 c

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/

相关文章:

c - C语言中如何结束循环?

与后增量和逻辑运算符混淆?

C char 双指针

android - 为什么我的 c 套接字死了?

android - 如何将预构建的共享库链接到 Android NDK 项目?

c - 无法从 C 中的 argv[1] 获取文件名

c - 如何计算链表中的节点数?为什么输出显示节点数为 '2' ?

c - 互补误差函数 erfcf() 的矢量化实现

c - 使用命令行参数读取文本文件不起作用

c - 指针 ** char 的指针问题