为什么以下表达式的计算结果为0?
i > --i假设i= 5。从左到右计算表达式时,左操作数(i)的计算结果为5,右操作数(--i)的计算结果为4。因此,表达式about的计算结果应为1。但当我使用gcc编译并运行它时,它的计算结果始终为0。我的思维过程中有缺陷吗?
发布于 2012-05-13 07:05:44
这只是未定义的行为,因为您正在修改i的值,并在没有插入序列点的情况下读取它。关系运算符<不引入序列点。
从C11,6.5(2):
如果标量对象上的副作用相对于同一标量对象上的不同副作用或使用同一标量对象的值进行的值计算未排序,则该行为是未定义的。
https://stackoverflow.com/questions/10568058
复制相似问题