C语言第六题,求解释其他几个选项,为什么错了。

 我来答
sdwffzlll
2016-05-29 · TA获得超过758个赞
知道小有建树答主
回答量:498
采纳率:85%
帮助的人:241万
展开全部
?:运算符是右结合的上式等价于 y = (x>0?1:(x<0?-1:0))
A是正确的
B加上大括号为
if(x){//如果x不为0
if(x>0) y = 1;

else if(x<0) y=-1;

}
少了x==0的情况

C加上大括号为
y = -1;
if(x){ //如果x不为0
if(x>0) y= 1;

else if(x==0) y=0; //到达不了

else y = -1;

}
少了x==0的情况

D加上大括号为
y = 0
if(x>=0){
if(x>0) y = 1;

else y = -1; //等价于x==0

}
少了x<0的情况
追问
那么CD前面对y赋值是干嘛用的
追答
CD前面对y的赋值就是没有满足if语句的值(可以理解为默认值),

这么看来,不是少了x==0和x<0的情况
应该是这样, 对于C,当x==0时 y = -1(明显与原语句不符); 对于D, 当x<0时, y=0(与原语句不符);

看得真仔细,是我疏忽了~~
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式