c语言二级一道试题

来源:百度知道 编辑:UC知道 时间:2024/05/22 12:10:53
设有定义:int a=2,b=3,c=4;则以下选项中值为0的表达式是:
A (!a==1)&&(!b==0) B (a<b)&&!c‖1
C、D我不写了,就判断A、B好了,我觉得应该是B,答案是A,请解释一下。
另外像B那样子是先运算“与”还是先运算“或”,即是说从左向右运算还是从右向左运算,谢谢。

(!a==1)中首先运行!a,因为!a的值为0,所以!a==1结果为0.同理可得(!b==0)值为1(上面回答在这里有问题).在B选项中,!c||1中的先执行!c,其值为0,然后进行||1运算.则!c||1=1.而(a<b)=1.所以整个试字就为1了

(a<b)&&!c‖1可以看作 ((a<b)&&!c)‖1,不管括号内是什么,‖运算符的右边是1,所以选项B的结果肯定是1;
(!a==1)&&(!b==0),运算符&&左边的!a==1的结果肯定是0,则远算符右边的
!b==0就不会被判断了。
这个结果是对的!!!
可以加上printf语句输入a,b,c的值一看就知道了,后面的语句执行了没有??

A: (!a==1)&&(!b==0)

a=2,则!a=0;因此!a==1 肯定为0,OK 下面的不应算了 ,选A

B:(a<b)&&!c‖1

B中||优先级别最低,由于最后有1,则为1

(a<b)&&!c‖1可以看作 ((a<b)&&!c)‖1,不管括号内是什么,‖运算符的右边是1,所以选项B的结果肯定是1;
(!a==1)&&(!b==0),运算符&&左边的!a==1的结果肯定是0,则远算符右边的
!b==0就不会被判断了。

(!a==1)中首先运行!a,因为!a的值为0,所以!a==1结果为0.同理可得(!b==0)值为0.在B选项中,!c||1中的先执行!c,其值为0,然后进行||1运算.则!c||1=1.而(a<b)=1.所以整个试字就为1了.你之所以算错,应该是把关系运算与逻辑运算的先后顺序弄乱了.

恩 答案就是A