hyqd.net
当前位置:首页 >> #inCluDE<stDio.h> mAin() {int x=1,y=2,z=0; i... >>

#inCluDE<stDio.h> mAin() {int x=1,y=2,z=0; i...

关键是if(x=2),这里的x=2为赋值表达式,且此条件为真,执行z=x,x=y,y=z;后,z=2,x=2,y=2.所以打印的x,y为2,2.

我来给你详细说说:(++x,y++),这是逗号表达式,先执行++x,然后执行y++;结果取逗号后面表达式的值,也就是y++的值.y++的值为3,因为这是后加表达式,如果是前加++y的话,值就是4;z+2的值是1+2=3;所以结果输出是33

hao

这边是先判断出x<y不成立所以只执行printf语句了,你这边第二个if语句是上个if语句里面嵌套的语句所以不执行了.

结果:-2#include void main() { int x=0,y=1,z=2; if(!x) z=-1;//x=0 则!x就表示为真 执行下面的语句z赋值1; if (y) z=-2;//y=1表示if条件语句为真 执行下面语句 z赋值-1 printf("%d",z);//输出z的值-2}

#include"stdio.h" void main() {int x=2,y=1,z=2; if(x<y) if(y<0) z=0; else z+=1; printf("%d\n",z);} 程序是这样的话,结果是2 因为else在没有括号标志的情况下是与紧接着它的上一个if匹配,这个程序里,第一个if不符合就执行输出语句了.

由于你的程序有问题..无法运行.将if语句后的条件语句加入大括号里面,将条件符号z=x,x=y,y=z;改成z=x;x=y;y=z;后 程序执行如下 先给x赋值1,y赋值2,z赋值0;判断x=2是真是假,为真执行下面的语句 z=x;x=y;y=z;将x被赋值为2的值赋值给z,将y等于2的值赋值给x,将z等于2的值赋值给y 结果输出 x=2,y=2;

打印 ### x=y+z=0;假,所以走else分支

答案为B 由于判断条件x<y不为真,所以接下来的if(y<0)z=0;else z+=1;不会运行,输出z=2

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.hyqd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com