| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 272 人关注过本帖
标题:[求助]gcc 4.1.1版与 gcc 3.4.4版,编译出不同结果。不知道gcc4.1.1是如何编 ...
收藏  订阅  推荐  打印 
kinglon
Rank: 2
等级:注册会员
帖子:44
积分:596
注册:2007-9-25
[求助]gcc 4.1.1版与 gcc 3.4.4版,编译出不同结果。不知道gcc4.1.1是如何编译。

main ()
{
int a=8;
printf("%d\t%d\t%d\n",++a,--a,a--);
int x=8;
printf("%d\t%d\n",++x,++x);
int i=8;
printf("%d\t%d\t%d\t%d\t%d\n",i--,--i,--i,i--,i++);
}

以上程序如果在gcc3.4.4版本下编译,结果就是我们认为正常的:
7 6 8
10 9
6 6 7 9 8
可是,如果在gcc4.1.1版本下编译,结果就是我们想不到的结果:
7 7 8
10 10
6 5 5 9 8
不知道为什么这两个编译器差这么多,gcc4.1.1是根据什么来编译以上代码呢?在3.4.4版>本上,我们知道他的从右往左计算的,可到了gcc4.1.1里面好像即不是从右往左算也不是从
左往右算,请高手赐教,谢谢。

搜索更多相关主题的帖子: gcc  编译  结果  
2007-11-15 12:37
kinglon
Rank: 2
等级:注册会员
帖子:44
积分:596
注册:2007-9-25

怎么没人回复,难道大家都没发现这个问题?
2007-11-15 17:59
無邪的睡脸
Rank: 3Rank: 3
来自:湖北武汉
等级:中级会员
威望:1
帖子:331
积分:3830
注册:2007-9-11

高手来指点啊,让我也学习学习!


不要仅为成功而努力.要为做一个有价值的人而努力
kobe24j@sina.com

2007-11-15 18:43
卧龙孔明
Rank: 12Rank: 12Rank: 12
等级:版主
威望:53
帖子:3732
积分:39392
注册:2006-10-13

完全没有必要挖掘这个,好好学习算法和数据结构是关键,抠这个没有用(不同的编译器甚至不同版本的编译器的结果是不同的)

为了中国软件工业的未来,有爱心的朋友请不要帮忙代做作业,或者至少是收费服务!如果您不需要钱,或者您不愿收费用于自己,请把收取的钱用于支援山区贫困学生…谢谢大家!
2007-11-15 18:46
kinglon
Rank: 2
等级:注册会员
帖子:44
积分:596
注册:2007-9-25

我们应该搞明白他的结果是怎么出来的吧?要不然怎么写代码?
2007-11-15 19:13
卧龙孔明
Rank: 12Rank: 12Rank: 12
等级:版主
威望:53
帖子:3732
积分:39392
注册:2006-10-13

我相信不会为了减少一点代码量而采用
printf(" ...",i++,++a);
这种方式,完全可以使用i=i+1; a+=1; 然后printf("...",i,a);
朴实的代码+完美的算法远远好于华丽的代码+漏洞百出效率低下的算法
而且如果采用您的方法,那岂不是您的代码会"养"成编译器依赖,在其它编译器下出现很大的错误或问题?

为了中国软件工业的未来,有爱心的朋友请不要帮忙代做作业,或者至少是收费服务!如果您不需要钱,或者您不愿收费用于自己,请把收取的钱用于支援山区贫困学生…谢谢大家!
2007-11-15 19:21
無邪的睡脸
Rank: 3Rank: 3
来自:湖北武汉
等级:中级会员
威望:1
帖子:331
积分:3830
注册:2007-9-11

有道理!要我写也不会写出这样的代码来!

不要仅为成功而努力.要为做一个有价值的人而努力
kobe24j@sina.com

2007-11-15 19:24
kinglon
Rank: 2
等级:注册会员
帖子:44
积分:596
注册:2007-9-25

如果在实际的工程中,我相信没人会写出这样的代码,我也不会。
现在我只是想知道这个gcc4.1.1是依什么样的规律来计算上面的代码的,只不过是想知道以上代码在GCC4.1.1里面的计算方向是什么样的,或是他的结果是怎么出来的,不知道有高手知道吗,谢谢。
(实际工程中,我也不会写出那样的代码,要不然我自己都会晕。。。虽然不会写出那样的代码,但是他的道还是应该弄明白的。)
2007-11-16 10:26
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.059001 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved