#include<stdio.h> main() { int a,b; a=3,b=(++a)+(++a)+(++a); p...
发布网友
发布时间:2024-10-14 00:21
我来回答
共3个回答
热心网友
时间:2024-10-14 19:07
整理后如下:
#include<stdio.h>
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 .如果有不同的结果,就不知道怎么回事了。。。
热心网友
时间:2024-10-14 19:09
楼上有错
输出
a=6,b=15
你说的哪个语句可以看成b=a+1+(a+1)+(a+1)
++a是指a+1之后再执行语句
所以第一次a++之后a=4 之后的a都要按4来算 第二次就变成5了
所以以此类推 b=4+5+6=15 而a就是最后得到的6
热心网友
时间:2024-10-14 19:02
#includ<stdio.h>//导入头文件,这个你知道吧
main()//主函数
{ int a, b; //定义变量a,b
a=3,b=(++a)+(++a)+(++a);/*给a赋值3,(++a)+(++a)+(++a)。++a之后a=4,++a之后a=5
b=4+5+6这时a=6 ++是先加后用*/
printf("a=%d,b=%d\n",a,b);//在屏幕上打印a 和b.靠我算的是15怎么运行起来是16呢?
}
楼上你的完全不对,++是比+优先级高但是这个没关系的