| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1701 人关注过本帖
标题:++i和i++的困惑
只看楼主 加入收藏
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1696
专家分:4295
注 册:2007-12-27
收藏
得分:0 
以下是引用rjsp在2022-11-15 22:46:06的发言:

++i 这个表达式的值是i自增后的新值,
一开始i=3,那么 ++i 就是4

并不代表i自增这个行为发生于表达式评估这个行为之前,i值变为4 属于 副作用,C语音只规定 副作用 发生于 下个序列点 之前就行了。


如果i还没有自增,那它哪来的新值呢?

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2022-11-15 23:07
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1696
专家分:4295
注 册:2007-12-27
收藏
得分:0 
我甚至理解为,这个表达式评估的结果被那句话规定为来自变量i,而不是其他来源。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2022-11-15 23:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
回复 11楼 forever74
x = i+1;
i = i+1;
2022-11-15 23:12
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1696
专家分:4295
注 册:2007-12-27
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

另外在后置++的第二段末尾明确描述了副作用与序列点的关系。
而在前置++的同样位置却没有类似描述。
我不认为标准文档的作者会为了避免重复而省略这种描述。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2022-11-15 23:16
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1696
专家分:4295
注 册:2007-12-27
收藏
得分:0 
以下是引用rjsp在2022-11-15 23:12:24的发言:

x = i+1;
i = i+1;


如果是这样的话,那么字斟句酌的标准文档应该描述为评估结果为i原来的值加1的和;而不是描述为i自增以后的新值。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2022-11-15 23:20
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1696
专家分:4295
注 册:2007-12-27
收藏
得分:0 
后置++和前置++的标准文档里都有明确的after字样,明显是用来规定这两种情况下表达式评估和副作用生效的先后次序的。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2022-11-15 23:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
我说服不了你,但是标准额外要求 后++和后-- 的副作用必须发生在表达式评估之后(我不知道为什么),而前++和前--则没提。
2022-11-16 00:06
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1696
专家分:4295
注 册:2007-12-27
收藏
得分:0 
读了一下cppreference网站的描述,和您说的一致。
相似于我在15楼说的那样,它把prefix ++的求值结果描述为:
前缀自增运算符的结果是将值 1 加到 expr 的值的结果
这明显与标准原文不一致啊。
其他结论依赖于这种不一致。


对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2022-11-16 01:42
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
回复 18楼 forever74
你睡得真晚
我也不敢确定,原文描述有歧义,我都是听别人一直这么讲的
2022-11-16 08:31
快速回复:++i和i++的困惑
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024712 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved