标题:为什么是2,2,2不是2,2,3
只看楼主
icecream235
Rank: 2
等 级:论坛游民
帖 子:31
专家分:33
注 册:2011-7-9
结帖率:100%
已结贴  问题点数:10 回复次数:4 
为什么是2,2,2不是2,2,3
int p=2;
    printf("%d,%d,%d\n",p,p++,p);
这个程序为什么输出的是2,2,2
2011-08-12 15:38
tisyang
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:132
专家分:737
注 册:2011-5-7
得分:10 
因为 printf 的具体实现问题,
http://apps.hi.baidu.com/share/detail/30106654
很多东西都不是自己看到的那样。

C++ 用无参数构造函数生成对象时候请勿在构造函数后添加无用的那一对括号,否则有可能会被当成函数声明而忽略,嗯,栈上构建的时候就是这样。
2011-08-12 15:47
xinshou1991
Rank: 2
等 级:论坛游民
帖 子:35
专家分:45
注 册:2011-7-25
得分:0 
肯定是这样的啊!
第一个p=2//显而易见
第二个p=2//p++这是后置自加,先把p(2)拿出来(输出),所以p=2。再加1,其实这里p=3了,只不过没来得及输出而已。
第三个p=3//这里的p=2和第二个p=2是没有关系的,还是“int p=2”中的p.
2011-08-12 16:07
eraser8023
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-6-21
得分:0 
这是自右向左运算的,这是很容易犯的错
2011-08-12 17:31
New_Born
Rank: 1
来 自:河南郑州
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-8-13
得分:0 


顶3楼
2011-08-13 15:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-347434-1-1.html




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

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