C语言中 main() {int x=1,y=1,z=0; if(z<0) if(y>0) x=3;

else x=5;
printf(''%d\t'',x);
if(z=y<0) x=3;
else if(y==0) x=5;
else x=7;
printf(''%d\t,x);
printf(''%d\t'');
}
结果是 1 7 0 为什么中间的答案是7??
其中的if(z=y<0) 不是先进行y<0的判断得0吗?

z=y<0是先判断y<0,此表达式值为0,即赋值z=0,然后表达式的值作为if判断条件,它是0,自然不成立了,于是往下执行if(y==0) 这里也不成立,再往下else执行了x=7,于是输出7了
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-21
是你说的那么判断的,但结果也是7。
先判断y<0 结果是假, 所以赋值z=0,返回z的值0 判断语句为假,执行else if (y==0)
y==0 为假 执行 else x=7
第2个回答  2012-09-21
你自己不是解答了么。
y<0 判断得0;
即返回false;
这条if语句就不执行了,转而执行下面的语句;
当判断y==0时,返回false,结束else if语句;
所以 x 最终为7;

C语言中 main() {int x=1,y=1,z=0; if(z<0) if(y>0) x=3;
z=y<0是先判断y<0,此表达式值为0,即赋值z=0,然后表达式的值作为if判断条件,它是0,自然不成立了,于是往下执行if(y==0) 这里也不成立,再往下else执行了x=7,于是输出7了

C语言中 main() {int x=1,y=1,z=0; if(z<0) if(y>0 具体请看下边程序...
int main(void) { int x=1, y=1, z=10;\/\/定义三个数 if(z<0) \/\/此语句为第一句z = 10; 因为10大于0 不成立,不执行下列二三语句,跳转语句四 if(y>0)\/\/\/此语句为第二句属于上一句的if语句 由于上个语句不成立所以不执行, x=3;\/\/\/此语句为第三句同上属于上一句的if语句 由于上个语句不成立...

一道c语言if条件句的问题
因为,if(x>y)判断语句下面的if相当是嵌套在第一个if里面,而else要与和它最近的if,也就是与if(y<z),保持一直,也就是说,整个程序可以理解为:include<stdio.h> main(){ int x=1,y=2,z=3;if(x>y){ if(y<z)printf("%d",++z);else printf("%d",++y);} printf ("%d\\n",...

c语言输入x=1输出y=1;
int main(){ int x,y;printf("输入x:\\n");scanf("%d",&x);if(x>0)y=1;else if(x<0)y=-1;if(x==0)y=0;printf("y的值为:%d\\n",y);}

...main ( ) { int x=0,y=0,z=0; if (x=y+z) printf(“***...
答案是B 因为C语言中"="是赋值号;if(x=y+z)是计算出y+z的值然后赋值给x,这个式子是永远成立的,所以会输出***;如果说要改错的话,应该改为if(x==y+z),构成逻辑表达式后,才符合程序设计的初衷。

c语言中intx=1,y=1,!x||y――的值
其次y=1,为真 x||y的意思是,如果有一个为真,那么都是真 因为x和y都是真,所以x||y都是真。但是这里有一个优先级的问题。!的意思是非,也就是说,如果一个真的值前面加一个!,那么他就是假,如果一个假的值前面加一个!,那么他就是真。 比如!1就是0,!0就是1(也可能不是1...

main() {int x=2,y=-1,z=2; if(x<y) if(y<0)z=0; else z+=1; prin...
z+=1;这是C里面的典型的摇摆问题,else和距离它最近的if进行匹配,它相当于:if(x<y){if(y<0)z=0;else z+=1;} 而且若像for和while循环,还有一些逻辑判断语句,若下面不带括号,它的作用于只是它紧跟着的唯一一条语句:比如:for(i=0;i<5;i++)printf("%d ",i+1);printf("$ ");...

c语言怎么区分else是跟哪个if的
如果没括号,找最近的那个if if(z<0) \/\/1 if(y>o)x=4;\/\/2 else X=5; \/\/3 printf("%d\\t",x);if(z=y>0)x=7;\/\/4 else if(y=0)x=3\/\/5 else X=6;\/\/6 这没有括号 第一个if没有else匹配 else 3跟最近的if 2匹配 4 5 6是else if语句,跟最近的匹配 ...

...<stdio.h>main(){int x=1,y=1;int m n;m=n=1,
首先指出程序中的三处错误,第一个是int m n中间应该有逗号,第二个是swtich拼写有错误,第三个是打印输入语句printf("x=%d,y=%d",x,y)有误。修正后程序的运行结果是:x=6,y=6。代码运行结果如下图所示:程序运行过程解析:1、完成变量的赋值,其中有x=1,y=1,m=1,n=1。2、执行第一...

C语言,设有说明语句int x=1,y=2; 则执行表达式x=y= =3后,变量x的值为...
include<stdio.h>int main(){ int x=1,y=2; x=y==3; printf("%d",x); return 0;} 先计算y==3,这个式子的值为0,因为y不等于3,为假,然后x=0。

相似回答