C语言十九题为什么选A

 我来答
勤奋的小智
2014-03-06
知道答主
回答量:6
采纳率:0%
帮助的人:2.7万
展开全部
因为这是if的嵌套,首先看第一个的if,她的条件是非X。这样就以为着执行else语句,可是,else语句嵌套if语句。if(判断的结果是错误的)后又紧跟着if--else语句,所以就不执行下面的语句了。直接输出即可。

我理解的是这样的
#include <stdio.h>
main()
{
int x=1,y=0;

if (!x)
{
y++;
}
else if (x==0)
{
if(x) {y+=2;}
else {y+=3;}
}
printf("%d\n",y);

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
9456001
2014-03-06 · 超过17用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:34.8万
展开全部
具体还是要看采什麼编译器或规范(像ANSI C)

在c语言中
非0为TRUE(真)
因此
if(!x) y++;
int x=1,y=0;代入,x=1相当於x为true,!x後是false(0),因此并不会执行该叙述

else if(x==0)
x也不等於0
那整段也被跳过

因此y还是等於初值,也就是等於0

若您用的软体是Microsoft Visual Studio
可能会有些意想不到的结果
因为Microsoft有针对些常见程式设计错误做些调整
写题目时还是采gcc(GNU C Compiler)的思维较保险
若用Windows作业系统,可考虑安装"Cygwin"来跑gcc程式
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tongfans
2014-03-06 · TA获得超过1127个赞
知道小有建树答主
回答量:683
采纳率:0%
帮助的人:730万
展开全部
if(!x) y++;

因为x为1,所以,!x为0,y++不执行

跳转到x==0的判断,x不等于0,以下两行代码不执行,

直接进行输出,所以y的值就是初始值0

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c67303967
2014-03-06 · TA获得超过192个赞
知道答主
回答量:92
采纳率:0%
帮助的人:38.1万
展开全部
因为else if(x==0)也是错的,所以后面的if语句就可以忽略了,即y等于一开始赋的值0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
海翼WA
2014-03-06
知道答主
回答量:62
采纳率:0%
帮助的人:7.5万
展开全部
else if (x==0)是不做的,而!X的意思是x==0,,其中是双重否定
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式