| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1246 人关注过本帖
标题:(++a) + (++a) + (++a)的答案出问题了
只看楼主 加入收藏
xiao20090916
Rank: 2
等 级:论坛游民
帖 子:7
专家分:21
注 册:2010-4-13
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:14 
(++a) + (++a) + (++a)的答案出问题了
我的如下代码出问题了, 是VC++6.0的问题吗?

int a=1;
int b;
b= (++a) + (++a) + (++a); 执行后b的答案居然是10, 是我的VC6.0出问题了?
搜索更多相关主题的帖子: 居然 
2010-04-13 05:53
MIQIKing
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:36
专家分:106
注 册:2010-3-21
收藏
得分:2 
#include<stdio.h>
void main()
{
    int a=1;
    int b;
    b=(++a)+(++a)+(++a);
    printf("%d",b);
}
结果是 12
因为++就先进行加一操作,然后计算的。所以啊,a进行三次加一操作之后进行加法求和。b=(4)+(4)+(4)=12;
2010-04-13 06:12
xiao20090916
Rank: 2
等 级:论坛游民
帖 子:7
专家分:21
注 册:2010-4-13
收藏
得分:0 

是的, 我也是这么想的。 但是我的Vc6.0的结果却是10, 实在是匪夷所思, 不知道会是什么原因?
我的VC6.0其他的计算是正确的, 比如:
int a=1;
int b;
b=(++a)+(++a);的结果是6
2010-04-13 06:16
一直很近
Rank: 2
等 级:论坛游民
帖 子:34
专家分:29
注 册:2010-4-6
收藏
得分:2 
(++a)+(++a)+(++a)=4+4+4=12     看来编译器还真有点问题了
2010-04-13 07:31
yjy1987420
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:120
注 册:2009-9-14
收藏
得分:2 
。。。。。。。。。这种题目不同编译器答案不同,没啥实际意义。不可能这么写代码的。
2010-04-13 08:00
一直很近
Rank: 2
等 级:论坛游民
帖 子:34
专家分:29
注 册:2010-4-6
收藏
得分:2 
我认真的看了下,确实等于10,++具有右结合性所以在计算+时先自加1为2,然后进行+,但是后面又有个++,于是2又先自加为3,内存中a又变成3,现在它可以相加了,等于6。进入下个+,同样由于++存在,a由3自加为4,现在开始加法运算,6+4=10,结果就是这么多,这是运算规律,和编译器应该没有关系
2010-04-13 08:22
老魏
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2010-4-12
收藏
得分:2 
是10塞 ,第一个++a是2,要加第二个++a.a原来是2,现在自增为3。内存就是3 所以就是3+3。最后个++a在3的基础上自增为4。所以最后结果是10
2010-04-13 08:36
TIC
Rank: 2
等 级:论坛游民
帖 子:34
专家分:27
注 册:2009-12-26
收藏
得分:2 
应该还是跟编译器有点关系!
a=1;
(a++)+(a++)=2;
这是我的编译器运行的结果!
对于你刚才的那个程序;
如果这样改下:
int a=1,b,c;
b=++a;
c=++a;
printf("%d",c);
结果  c=3;
正常!!
2010-04-13 09:41
xiao20090916
Rank: 2
等 级:论坛游民
帖 子:7
专家分:21
注 册:2010-4-13
收藏
得分:0 

按 一直很近 和 老魏的 说法, 就是 说, 后面 的++a 还没有做之前, 就开始做加法了, 这样的话, 优先级是有限制的? 并非所有后面优先级高的先做,而是 前面 的 加法 先于 后面 的++操作了?
2010-04-13 11:38
whys
Rank: 1
等 级:新手上路
帖 子:50
专家分:8
注 册:2009-10-27
收藏
得分:2 
win-TC 测试结果是 12
2010-04-13 12:00
快速回复:(++a) + (++a) + (++a)的答案出问题了
数据加载中...
 
   



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

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