#include main() { int a,b; a=3,b=(++a)+(++a)+(++a); printf("a=%d,b=%d\n",a,b); }分析这个程序?解释表达式:b=(++a)+(++a)+(++a);

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/15 06:19:15
#include main() { int a,b; a=3,b=(++a)+(++a)+(++a); printf(

#include main() { int a,b; a=3,b=(++a)+(++a)+(++a); printf("a=%d,b=%d\n",a,b); }分析这个程序?解释表达式:b=(++a)+(++a)+(++a);
#include main() { int a,b; a=3,b=(++a)+(++a)+(++a); printf("a=%d,b=%d\n",a,b); }
分析这个程序?解释表达式:b=(++a)+(++a)+(++a);

#include main() { int a,b; a=3,b=(++a)+(++a)+(++a); printf("a=%d,b=%d\n",a,b); }分析这个程序?解释表达式:b=(++a)+(++a)+(++a);
整理后如下:
#include
main()
{
int a,b;
a=3,b=(++a)+(++a)+(++a);
printf("a=%d,b=%d\n",a,b);
}
主要是第二个表达式a=3,b=(++a)+(++a)+(++a);,它由一个逗号运算符将两个表达式分开,由于逗号运算符的性质(分别计算左右两边的表达式),所以它被解释为:首先计算逗号左边——a赋值为3,然后计算逗号右边——由于++与括号的优先级都高于+号,所以a被先自加3次变为6,b被赋值6+6+6等于18..
最后输出结果为a=6,b=18
=========
由于有括号,3个++a应该是同时算的. 我在visual studio 2010中粘贴提问者的代码运行结果为a=6,b=18 .如果有不同的结果,就不知道怎么回事了.