#include main() { int a,b; a=3,b=(++a)+(++a)+(++a); printf("a=%d,b=%d\n",a,b); }分析这个程序?解释表达式:b=(++a)+(++a)+(++a);
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/30 04:39:57
![#include main() { int a,b; a=3,b=(++a)+(++a)+(++a); printf(](/uploads/image/z/11498848-16-8.jpg?t=%23include+main%28%29+%7B+int+a%2Cb%3B+a%3D3%2Cb%3D%28%2B%2Ba%29%2B%28%2B%2Ba%29%2B%28%2B%2Ba%29%3B+printf%28%22a%3D%25d%2Cb%3D%25d%5Cn%22%2Ca%2Cb%29%3B+%7D%E5%88%86%E6%9E%90%E8%BF%99%E4%B8%AA%E7%A8%8B%E5%BA%8F%3F%E8%A7%A3%E9%87%8A%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%9Ab%3D%28%2B%2Ba%29%2B%28%2B%2Ba%29%2B%28%2B%2Ba%29%3B)
#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 .如果有不同的结果,就不知道怎么回事了.