C语言if语句?

#include<stdio.h>int main(){ int x,y; printf("enter x:"); scanf("%d",&x); y=0; if(x>=0) if(x>0) y=1; else y=-1; printf("x=%d,y=%d尀n",x,y); return 0; }当x<0时y不应该等于-1吗,为什么我运行时y=0呀
2026年09月22日 19:54
有5个网友回答
网友(1):

您好,很高兴回答您的问题。
在c语言中,if语句表示的是选择结构,也就是满足某种条件就执行对应的语句。其中else语句不能单独使用,它的原则是总是与在它前面的、离它最近的、还没有与别的else匹配的if语句匹配。所以根据以上规则,发现else是与第二个if匹配,那么说明第一个if是总条件,那么else表示的就是x=0的情况。
其实用三个并列的if语句,就可以解决x=0,y=1;x>0,y=1;x<0,y=-1的情况。若是非要修改您的程序,那么就是把第二个if语句和y=1用花括号括起来即可。

网友(2):

答:代码的排版是非常重要的,你把代码重新排版一下,更有利于你理解程序。如下所示。

很明显里面的else是跟第2个if相配对的, Y的初值等于0,当y小于0时根本不会进入到if语句里面,所以y输出结果仍然为0。

希望可以帮助到你~

网友(3):

这个应该是if...else的配对有关系,else总是跟离它最近if配对的,如果你要else跟第一if配对,应在在第一个if语句后面用打括号把第二个if语句括起来。一般if语句这些大括号最好不要省略,稍微粗心一点就很容易导致出错,而且这种错误很难找出来。

网友(4):

因为你的else是和if(x>0)配对的,你的第二个if嵌套在第一个if里面,输入x<0时,整个判断都进不去,所以y保持初值为0被输出了

网友(5):

代码写得就是等于零......
看着架势应该是要写一个程序,判断x正负,正则输出一,负则输出-1,0则输出0,上代码。
#include
int main()
{
int x,y=0;
printf("enter x");
scanf("%d",&x); //得到数据
if(x>=0)
{
if(x==0)
{ //是零的情况下
printf("0");
}
if(x>0)
{ //正数情况下
printf("1");
}
}else{ //负数情况下
printf("-1");
}
}