main() {int x=4,y=0,z; x*=3+2;printf("%d",x); x*=y==(z=4);printf("%d",x); }

答案20,0 。。为什么?、

x *=3+2 相当于x = x*(3+2);
x*=y==(z=4);
相当于先执行z=4,赋值表达式的运算结果就是赋值表达式的值,即(z=4)==4;
所以判断y==(z=4),也就是y==4;
(y==4)本身是个判断语句,如果为真,则表达式结果为1,否则为0;
在这里,y本身等于0,所以表达式y==4为假,表达式的值为0;
也即x*=y==4 <=> x*=0, 所以最后x=0.
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-01
x*=3+2等价于x=x*(3+2) ,答案是20
x*=y==(z=4); y==(z=4)先计算,0==4,为假,结果为0;再运算x=0;===>这里有运算符优先级问题
第2个回答  2011-12-01
前面4*5,后面先y==(z=4),y不是4,所以是false,也就是0,x*0就是0了

...main() { int x = 4; do { printf("%2d", x--); }while(!x); }...
4,C正确,选C——因为输出4后!x就是!4==0,就结束循环了。

...main() { int x=1,y=3; printf("%d,",x++); { int x=0;x+=y*2...
22)以下程序的输出结果是 main(){ int x=1,y=3;printf("%d,",x++); \/\/先取值再自加 输出 1,但是x的值已经变成了2 { int x=0;x+=y*2; \/\/新的x变量,外面一层的 x被 屏蔽, x=6 printf("%d,%d, ",x,y); \/\/输出 6,3 } printf("%d,%d\n",x,y...

main() { int X=1,y=2,z=3; x+=y+=z; printf("%d",(x<y?X++;y++...
x=1,y=2,z=3 x+=y+=z 是自右运算的,y=y+z=5 此时y=5 x+=y x=x+y=1+5=6 然后判断x<y 很明显x>y 所以条件是假值,取y++ 这里注意一下,要求输出的是y 不是y的值 所以最后结果是5 但如果要求输出y y的值就是6 ...

...<stdio.h> main() { int x=1, y=2, z=3; if(x>y) if(y<z) printf...
if(y<x)不成立,不执行下面。直接执行else printf(“%d,x++),所以结果为1

...main() { int x=0; while(x++<=5) ; printf(“%d, ”,x); printf...
第一遍 x=0 while(x++<=5)===>0 < 5 继续循环 x=1;第二遍 x=1 while(x++<=5)===>1 < 5 继续循环 x=2;第三遍 x=2 while(x++<=5)===>2 < 5 继续循环 x=3;第四遍 x=3 while(x++<=5)===>3 < 5 继续循环 x=4;第五遍 x=4 ...

...main() { int x=2,y=3; x%=y+3; printf("%d",x); } 谁能给解释一下...
x%=y+3等价于 x=x%(y+3)=2%(3+3)=2%6 \/\/表示2除以6所得的余数 =2

...main() { int w=4,x=3,y=2,z=1; printf("%d",(w<x?9w:z<y?z:x...
include <stdio.h> void main(){ int w=4,x=3,y=2,z=1;printf("%d",(w<x?9*w:z<y?z:x));\/\/9与w之间应该有 } 程序执行结果为:1

当int x=2,y=4,z=3时,执行以下程序段后z=___. if(x<y)z+=x; else z...
z最后值是1。解:每个if判断条件,只控制其后的一个句子,也就是if之后,第一个分号之前,当然,你可以用大括号把若干句子括到一起,作为一个句子,以使if之后执行多个句子。所以,x 然后继续程序,执行x=y,此时,x=2,y=2,z=1 最后,执行y=z,此时,x=2,z=1;因为x=1,z=x=1;x=...

...void main() { int x,y; x=y=0; while (x<10) x+=++y; printf ("%...
一共执行4次循环 第一次执行完y=1,x=1 第二次执行完y=2,x=3 第三次执行完y=3,x=6 第四次执行完y=4,x=10 循环条件不成立,输出4,,10

C语言问题...
main(){ int x=0,y=5,z=3;while(z—->0&& ++x<5) y=y-1;printf(“%d,%d,%d\\n”,x,y,z);} while语句的条件中,相当于 z' = z; z = z -1;if(z' > 0){ x = x+ 1; x' = x;if( x' < 5){ y = y-1;} } 这样的两段处理循环执行。第一次:z=3,x=0,y...

相似回答