一道简单C言语题目???

来源:百度知道 编辑:UC知道 时间:2024/05/24 14:07:49
a=6;
c=(++a)+(++a)+(++a);
C是多少?????
C为什么是25说详细点

我算是24可是编译出来是25

原因????????

这有什么麻烦的,乱讲,我回答过一次的!

理由就是四则运算的顺序,下面解释!

++a是先+1再用,这没疑问吧?

不管什么编译器只可能出两种结果,25和27!

先说25的,c=((++a)+(++a))+(++a);这样清楚点,他是达到了第一个运算条件就开始算了,先确定两个加数,++a两次,所以a是8,c=8+8+(++a)=25!

再说27的,c=(++a)+(++a)+(++a); 这就是在一个同等级的运算级别中先确定所有的运算数字!三次++a就是9,所以是27!

数据结构问题!

依据编译环境不同而有计算次序区别。
VC环境是25,计算两个++a,8+8=16,在计算第三个++a为9,8+8+9=25.
TB环境,计算三个++a之后9+9+9=27.
结果24是不会出现的。

答案取决于编译器,这样的代码根本就没有移植性可言。

如果想知道答案,去看看序列点的文章,恐怕不是三言两语能说清除的。

为什么我编译的是27呢?25怎么也得不出来撒!

我到TC 环境运行了一下也是25,可能是前面一位所说的那种情况吧!!