| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 613 人关注过本帖
标题:求解释(++x)+(++x)+(++x)
只看楼主 加入收藏
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:5 
求解释(++x)+(++x)+(++x)
#include <stdio.h>
int main(void)
{
    int x=1,x1,x2,x3,y1=0,y2=0;
    x1=++x;
    x2=++x;
    x3=++x;
    x=1;
    y1=(++x)+(++x)+(++x);
    y2=x1+x2+x3;
    printf("(++x)+(++x)+(++x)=%d\n",(++x)+(++x)+(++x));
    return 0;
}
使用gdb调试后,输出如下结果
x = 4
x1 = 2
x2 = 3
x3 = 4
y1 = 10
y2 = 9
为什么(++x)+(++x)+(++x)的结果是10,分拆后结果是9?
搜索更多相关主题的帖子: include return 
2011-08-28 19:29
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:5 
你的书上没解释过吗?如果没解释过那么建议你立刻果断换书。

My life is brilliant
2011-08-28 19:34
naruto01
Rank: 4
等 级:业余侠客
帖 子:103
专家分:280
注 册:2011-5-23
收藏
得分:5 
2011-08-28 19:35
Luminal
Rank: 6Rank: 6
等 级:侠之大者
帖 子:140
专家分:470
注 册:2011-8-24
收藏
得分:10 
2楼,3楼说的都对,如果你要是调试的结果是y1=10的话!
我试了一下,我这里的结果是:
y1=12,此时的x=4,x=4这个好理解
x=1;   
y1=(++x)+(++x)+(++x);
x经过3次自+,结果就是4,关键是编译器是怎么处理   y1=(++x)+(++x)+(++x);的
1.y1=2+3+4=9  
2.y1=3+3+4=10
3.y1=4+4+4=12
所以我也赞同编译器不同,结果不同的说法(如果你说的y1=10是真的话)
另外想问一下,你的执行结果
printf("(++x)+(++x)+(++x)=%d\n",(++x)+(++x)+(++x));的输出是多少啊?
是21吗?还是19?还是18?还是其他的什么值?
2011-08-28 20:36
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:0 
(++x)+(++x)+(++x)=19

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2011-08-28 21:39
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 楼主 pauljames
WTC环境下 y1=6 y2=9 输出  9  人脑计算仅供参考:

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-08-28 21:56
快速回复:求解释(++x)+(++x)+(++x)
数据加载中...
 
   



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

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