main() {int x=2,y=-1,z=2; if(x<y) if(y<0)z=0; else z+=1; printf("%d尀n",z); } 为什么呢结果是2呢?谢

2024年11月28日 21:58
有5个网友回答
网友(1):

嗯,这个结果就是2,给你举个例子!
if(xif(y<0)
z=0;
else
z+=1;

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

还有关于逻辑表达式的短路特性,你要是想了解的话,我可以介绍给你!

网友(2):

应该是if(x

网友(3):

不能确定是否加打括号时候尽量加上 确定自己的顺序对 加上括号不影响

网友(4):

因为if(x

网友(5):

if(x
所以z还是2