关于C语言的简单问题

[复制链接]
查看11 | 回复3 | 2009-6-24 00:44:13 | 显示全部楼层 |阅读模式
ls的正解,这个和编译器有关,用java的编译器或者gcc等又会得到不同的结果。lz还是不要在这种题目上过多费神吧,如果我遇到这种题目,我就一句话:跟编译器有关,答案不确定。
回复

使用道具 举报

千问 | 2009-6-24 00:44:13 | 显示全部楼层
我在TC2.0下的结果。上学时老师说过,编译环境不同,结果就不同。个人认为:q=24或21是可以理解,但等于22.想不通。


回复

使用道具 举报

千问 | 2009-6-24 00:44:13 | 显示全部楼层
i++,见到就加1++j,见到就加1但是在同一行用多个++j会引起歧义,不同版本的编译器会给出不同的答案。比如在我的电脑上输出是15,24,8,8。对于您的情况,在编译器读q=(++j)+(++j)+(++j);时,最后一个++j先被计算,此时j=6(我们叫它jj好了);然后是中间那个,此时j=7(我们叫它jjj);最后是第一个++j,此时j=8(jjjj);但是由于编译解释的缘故,我的电脑认为q=jjjj+jjjj+jjjj=8+8+8=24;你的电脑认为q=jjjj+jjjj+jj=8+8+6=22;
回复

使用道具 举报

千问 | 2009-6-24 00:44:13 | 显示全部楼层
不同编译器产生的结果,q值是不同的。主要有22,24两种。22时的执行步骤:1.先对两个相加的数进行处理,++j,++j,即得j=72.将两个j相加,得到143.14+(++j),先将++j,得到j=84.14+8=2224时的执行步骤:先将三个操作数都进行处理,即得j=8再执行加指令,将三个数加在一起,得到24哈哈,汇编语言的知识发挥作用了。多赏点分哦!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行