C语言问题

设有:int a=1,b=2,c=3,d=4,m=2,n=2; 执行(m=a>b)&&(n=c>d)后,n的值为( )
A. 1 B.2 C. 3 D. 4

逻辑运算符是根据表达式的值来返回真值或是假值。其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。
符号 功能
&& 逻辑与
|| 逻辑或
! 逻辑非
例如:
5!3;
0||-2&&5;
!4;

当表达式进行&&运算时,只要有一个为假,总的表达式就为假,只有当所有都为真时,总的式子才为真。当表达式进行||运算时,只要有一个为真,总的值就为真,只有当所有的都为假时,总的式子才为假。逻辑非(!)运算是把相应的变量数据转换为相应的真/假值。若原先为假,则逻辑非以后为真,若原先为真,则逻辑非以后为假。
还有一点很重要,当一个逻辑表达式的后一部分的取值不会影响整个表达式的值时,后一部分就不会进行运算了。例如:
a=2,b=1;
a||b-1;
因为a=2,为真值,所以不管b-1是不是真值,总的表达式一定为真值,这时后面的表达式就不会再计算了。
因此表达式(m=a>b)&&(n=c>d)只运算m=a>b部分,n的值没有改变,所以n=2.

参考资料:http://club.it.sohu.com/read_elite.php?b=program&a=117672

温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-07-26
应该选B
是2
因为&&运算符是从左向右运算的
当&&左边的为假(值为零)时就不再运算&&右边的算式了
(m=a<b)&&(n=c>d)这样改后就是0了
第2个回答  2007-07-28
选B
二楼说的对,顺便补充一点就是
如果左边是对的的话,那么N=1。
第3个回答  2007-07-28
其实很简单阿你看,
&&的结合性是由左向右;
=的结合性是由右向左;
()的结合性在这里是最高;
那么先执行m=a>b,但发现其真值为假,那么与运算的右半部分就不会再执行,n就没有被重新赴值,所以n=2

你还可以用排除法的阿如果你不太会的话,n无非0或2,没有0,只能选B

当然你还可以把这个小程序输入TC进行验证,哈哈,应该没错了,不然我的C语言白学了~~
第4个回答  2007-07-28
c

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网