首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C语言中布尔表达式的结果

C语言中布尔表达式的结果
EN

Stack Overflow用户
提问于 2012-05-13 07:03:57
回答 1查看 206关注 0票数 1

为什么以下表达式的计算结果为0?

代码语言:javascript
复制
i > --i

假设i= 5。从左到右计算表达式时,左操作数(i)的计算结果为5,右操作数(--i)的计算结果为4。因此,表达式about的计算结果应为1。但当我使用gcc编译并运行它时,它的计算结果始终为0。我的思维过程中有缺陷吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-13 07:05:44

这只是未定义的行为,因为您正在修改i的值,并在没有插入序列点的情况下读取它。关系运算符<不引入序列点。

从C11,6.5(2):

如果标量对象上的副作用相对于同一标量对象上的不同副作用或使用同一标量对象的值进行的值计算未排序,则该行为是未定义的。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10568058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档