C语言if语句?

#include<stdio.h>intmain(){intx,y;printf("enterx:");scanf("%d",&x);y=0;if(x>=0)if(x>0... #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呀
展开
 我来答
月光下的qq
2021-07-08 · 科技优质答主
月光下的qq
采纳数:392 获赞数:670

向TA提问 私信TA
展开全部
您好,很高兴回答您的问题。
在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用花括号括起来即可。
小小编程书童
科技发烧友

2021-07-09 · 有一些普通的科技小锦囊
知道小有建树答主
回答量:583
采纳率:92%
帮助的人:28.3万
展开全部

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

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

希望可以帮助到你~

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
镇远山神侍
2021-07-08 · 超过13用户采纳过TA的回答
知道答主
回答量:50
采纳率:42%
帮助的人:10.1万
展开全部
这个应该是if...else的配对有关系,else总是跟离它最近if配对的,如果你要else跟第一if配对,应在在第一个if语句后面用打括号把第二个if语句括起来。一般if语句这些大括号最好不要省略,稍微粗心一点就很容易导致出错,而且这种错误很难找出来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Ruby1112qwer
2021-07-08 · TA获得超过191个赞
知道答主
回答量:90
采纳率:77%
帮助的人:5.8万
展开全部
因为你的else是和if(x>0)配对的,你的第二个if嵌套在第一个if里面,输入x<0时,整个判断都进不去,所以y保持初值为0被输出了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牛宝宝qy
2021-07-08
知道答主
回答量:14
采纳率:33%
帮助的人:1.1万
展开全部
代码写得就是等于零......
看着架势应该是要写一个程序,判断x正负,正则输出一,负则输出-1,0则输出0,上代码。
#include<stdio.h>
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");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式