回 帖 发 新 帖 刷新版面

主题:结果分析

#include "stdio.h"
void main()
{int x,b;
    x=3;
b=(x,(x++)+(++x)+(++x));
printf("%d",b);
}



结果为什么是13    

高手讲解一下

回复列表 (共2个回复)

沙发

首先弄清逗号表达式的运算规则:

对于 

  运算式1,运算式2,…,表达式n

先依次算出各运算式的值,结果为表达式n的值。

知道运算规则后,易知程序中b的值是(x++) + (++x) + (++x)。
先看第一个括号:先调用x的值,故第一个括号的结果是3,然后x自增成为4,
进入到第二个括号,第二个括号就等同于(++4),然后x先自增加一后调用值,
所以第二个括号的值是5,此时x的值成了5,并进入第三个括号内。在第三个
括号内x先自增后调用,故第三个括号的结果是6,此时x的值也成了6。
终上所述,b = 3 + 5 + 6,故结果输出为13。(附:如果此时输出x的话,
会发现结果是6,从而验证了上面的分析过程)

板凳


,b = 3 + 5 + 6,故结果输出为13!!!! 
那不是14么

我来回复

您尚未登录,请登录后再回复。点此登录或注册