int x=5; int y=2+(x+=x++,x+8,++x); printf("%d",y); 结果是多少,为什...
int x=5;int y=2+(x+=x++,x+8,++x); \/\/这里括里面要取的值是最后一个逗号后面的值 \/\/前面依次执行 x+=x++,这个是先用了x再x++ x+=x相当于 x=x+x =5+5=10 再x++ x=11,然后是x+8,x不变,最后是++x,x=12,所以y=12+2=14 printf("%d",y); \/\/输出14 ...
int x=5; int y=2+(x+=x++,x+8,++x); printf("%d",y); 求程序的结果并...
首先(x+=x++,x+8,++x)这个表达式可以变成(x+=x++,++x)然后从左往右来:x+=x++,得x=11。(这个地方可以到C 中试验一下,原式可变为x=x+x++,x=5,x++=6,所以x+=x++最后的值为11)。继而++x 得到12;从而(x+=x++,x+8,++x表)达式的值为12 y=2+(x+=x++,x+8,++x)=14...
...x=5; int y=2+(x+=x++,x+8,++x); printf("%d",y); }
先算的x++,x+8,++x,得x=7,然后x=5+7,x就成了12了。最后y=2+12=14
C语言知识
int y=2+(x+x++,x+8,++x);printf("%d\\n%d\\n",x,y);运行结果是10 第二行括号里的逗号表达式运行过程是从左往右,逗号表达式返回的最终结果是最后面的++x:x+x++:先执行x+x,但是并没有将相加结果赋给x,此时x还是6,然后执行x++,这样x的值变成7;x+8:x+8的结果没有赋给x,x...
...{ int x =5, y= 10; y++ ; x + = ++y; printf("%
【结果】:x=0,y=12第一次:执行前x=30,y=0,满足循环条件;运算结束x=15,y=2;循环结束x=14,y=3第二次:执行前x=14,y=3,满足循环条件;运算结束x=7,y=5;循环结束x=6,y=6第三次:执行前x=6,y=6,虽然x
已知有int x=5,分别执行表达式y=x++和y=++x后,y 的值分别为( )?
y=x++ 出来的应该是5 x++是你这条运行完之后x才变成6, 另外一个出来的是6,++x是先加1在赋值
...y = x++ * ++x; printf("x = %d\\n",x); printf("y = %d\\n",y...
跟编译器优化有关。Win下面结果x=4,y=9
...while (x<15) y++,x+=++y printf(“%d,%d”,y,x);的结果是
x = 0时,执行y++后,y = 1,执行x += ++y后,y = 2,x = 2 x = 2时,执行y++后,y = 3,执行x += ++y后,y = 4,x = 6 x = 6时,执行y++后,y = 5,执行x += ++y后,y = 6,x = 12 x = 12时,执行y++后,y = 7,执行x += ++y后,y = 8...
int x=3; int y; y=(++x)+(++x)+(++x); printf("%d",y); 为什么结果会...
这个问题的解跟编译器有关 不同的编译器有不同的答案 vc编译的是两个以内的(++)+(++)形式以后面一个的x值为x的值 也就是y=(++x)+(++x)=5+5=10 y=(++x)+(++x)+(++x)+(++x)=5+5+6+7 2个以上的都是这个规律
int x=5,y=4; int z=max(x++, y++); printf("%d %d %d\\n", x, y...
int z=max(x++, y++);编译时会变成如下:int z ;z=( (x++>y++)?x++:y++ ) ; \/\/因为x>y,所以x++会执行两次,判断一次,取值一次,故x最终结果加两次, 而y++只在判断用了一次,所以只加了一次 所以结果为:7 5 6