为什么以下表达式的值为0?

i > --i

假设我=5从左到右计算表达式,计算左操作数(i)得到5,计算右操作数(-i)得到4所以about表达式的值应该是1但当我用gcc编译并运行它时,它的计算结果总是为0我的思维过程有缺陷吗?

最佳答案

这只是未定义的行为,因为您正在修改i的值,并且在没有插入序列点的情况下读取它关系运算符<不引入序列点。
从C11,6.5(2):
如果标量对象上的副作用相对于同一标量对象上的不同副作用或使用同一标量值的值计算是未排序的
对象,行为未定义。

关于c - C中 bool 表达式的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10568058/

10-11 22:05
查看更多