主题:结果分析
jsjyingyu
[专家分:0] 发布于 2009-10-29 10:57:00
#include "stdio.h"
void main()
{int x,b;
x=3;
b=(x,(x++)+(++x)+(++x));
printf("%d",b);
}
结果为什么是13
高手讲解一下
回复列表 (共2个回复)
沙发
QXVC [专家分:60] 发布于 2009-11-10 00:27:00
首先弄清逗号表达式的运算规则:
对于
运算式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,从而验证了上面的分析过程)
板凳
jsjyingyu [专家分:0] 发布于 2009-11-13 12:26:00
,b = 3 + 5 + 6,故结果输出为13!!!!
那不是14么
我来回复