C语言中遇到的问题(1)

在下列条件语句中,只有一个在功能上与其他三个语句不等价,其中s1和s2表示某个C语句),这个不等价的语句是_____
A) if(a) s1;else s2;
B) if(!a) s2;else s1;
C) if(a!=0) s1;else s2;
D) if(a==0) s1;else s2;
我选C,正确答案是D;
C的意思是if(a!=0)成立,执行s1,if(a=0) 执行s2;
而A B D都是if(a) 执行s1,否则执行s2;
我这样想对吗?

答案是D,你想的不对。
if(a) s1;else s2;表示的是a的值不为0,执行s1,a的值等于0,执行s2
b的意思也是
c的意思是a的值不为0,执行s1,否则执行s2,是满足a和b的要求的。
d的意思是a的值等于0,执行s1,否则执行s2,很明显,这个是与上面的含义相反。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-04
对的,if里面的判断条件你看下是否为真就行,前三个都是“a==1”(或者a!=0)为真,第四个是a==0为真,故选D本回答被网友采纳
第2个回答  2014-11-04
答案选 D
C中 if( a != 0 ) 与 if( a) 是同一个意思
相似回答