C语言第六题,求解释其他几个选项,为什么错了。
1个回答
展开全部
?:运算符是右结合的上式等价于 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的情况
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(与原语句不符);
看得真仔细,是我疏忽了~~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询