下述程序的输出结果是() main(){int a,b,c; intx=2,y=4; a=(y=x++)?-y:++x; b=y++;c=x;

printf("%d,%d,%d",a,b,c);}A-2,2,4B-2,2,3c3,2,3D3,2,4麻烦大家帮我解答哈,最好附录下过程。。万分感谢!

B
y=x++,是y=2,然后x变成3
2是非零值,看作逻辑真,所以执行a=-y,a变成-2
b=y++,b变成2
c=x=3追问

int y=4不就没作用了??为什么b=y++不是4??以下程序的运行结果为 ??main(){ int a=2,b=7,c=5;switch(a<0){case 1:switch(b<0){case1:printf("@");break;case2:printf("!");break:} case0:switch (c==5)case0;printf("*");break;case1:printf("#");break;case2:printf("$");break;}default:printf("&");}printf("\n");}麻烦帮我解答哈,万分感谢!!!!!!!

追答

因为在之前已经有了y=x++了。y的值已经被x的值赋值了,所以y的初始值是多少都无所谓。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-01-18
.新语言吗? 请问,写完整了吗 我是来打酱油的

...main() { int a = 1,b = 2; printf ("%d\\n",a=a+); }
输出表列有三项,格式控制字符只有一项,对应表达式a=a+1=2,所以输出2 1.a= b+ c 所以表达式值为非零,为真,执行printf ("###\\n");2.自增运算符后缀,所以先引用,后自增,m为2,m>2为假,然后m自增一值为3,执行else部分,m+2=5 7.注意是x=2 ,是=,赋值号,也就是x被赋值为2,表达式...

...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...

...x,int y){return (x+y);} main() {int a=1,b=2
:8

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

以下程序的输出结果是( )。 main() { int x=2,y=-1,z=2;
选B if(x<y)的判断已经不会执行,后面的else是接上面那个不会执行的if,所以z的值不变,输出2

main() { int X=1,y=2,z=3; x+=y+=z; printf("%d",(x<y?X++;y++...
printf("%d",(x<y?X++;y++)) } 这是一个条件表达式,判断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的值 ...

...main( ) {int x=2,y=-1,z=2; if(x<y) if(y<0) z=0; else z+=1...
结果是Z=2;分析:关键是看else与哪个if配对;由于else最靠近第二个if,所以是与第二个if配对的(就近原则),也就是第一个if没有else,从整个程序来说,先判断第一个if语句,因为x>y,所以不执行第一个if里面的所有语句(也就是不执行这两个语句:if(y<0) z=0; else z+=1;),也就是z...

以下程序的运行结果是 。 main() { int x,y,z;
运行结果是:1,0

...main() { int a=2,b=4,c=6,x,y; y=(x=a+b),(b+c); printf("y=%d,x...
如果是((x=a+b),(b+c))实际上可以看成(6,10)整个逗号表达式的值应该是10 但这是错的,这儿还有赋值运算符.赋值运算符的优先级是14,而逗号表达式的优先级是15,也就是说上面的表达式中 y=(x=a+b),(b+c);应该等价于这样的结合:y=x,10;如果这样写的话,则答案很清晰,为:6,我也是...

...main( ) { int x=10,y=10,i; for(i=0;x > 8;y=++i) printf("%d,%d...
\/\/ 先输出后计算,所以输出10,10,之后x执行减一,x=9.第二次执行 for(i=0;x > 8;y=++i) \/\/ 此时x=9,i=1,y=1,printf("%d,%d ",x--,y); \/\/ x=9,y=1输出9,1,结束后x=8.第二次执行 for(i=0;x > 8;y=++i) \/\/由于x=8,不满足条件所以退出循环。

相似回答
大家正在搜