首页 > 试题广场 >

设int a=3,b=5,m,执行表达式m=a=3&&a+

[单选题]

设int a=3,b=5,m,执行表达式m=a<=3&&a+b<8后,m的值为()

  • true
  • false
  • 0
  • 1
推荐

本题选C

就题目而言,相当于是m=(a<=3 && a+b<8),首先执行算数运算符a+b得8,然后执行关系运算符a<=3得true、(a+b)<8得false,然后执行&&运算符,true&&false得false,最后执行赋值运算符m=false,但是m是整型,因此将false转为整型即为0。


同一优先级的运算符,结合次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

编辑于 2020-03-05 14:21:34 回复(0)
逻辑运算符的优先级高于赋值运算符,所以
m=a<=3 && a+b<8 等效于
m=(a<=3 && a+b<8);
逻辑表达式会采用截断算法,首先比较a<=3是对的,结果是1; 其次比较a+b<8,是错的,结果是0;
逻辑表达式 1&&0 结果是0,m=0
因此本题选C
发表于 2020-03-04 15:17:26 回复(0)
根据题意的m=a为真等于1,a<b为假等于0,&&  只要有一个表达式为假整个表达式都为假,所以答案选c
发表于 2020-05-23 09:02:33 回复(0)
算数大于关系大于逻辑(除去!)大于赋值,算关逻赋
编辑于 2020-04-17 11:51:01 回复(0)
C
m=a
3<=3   1
a+b<8  0
&&     一假即假 0

发表于 2020-03-05 11:15:35 回复(0)
C
所有关系运算符的优先级比算术运算低,但比赋值运算高
1.m=3<=3&&8<8
2.m=1&&0
3.m=0
发表于 2020-03-04 20:47:08 回复(0)
    int a=3,b=5,m;
    m=a<=3&&a+b<8;
    std::cout<<m<<std::endl
m=0;
故,答案选C
发表于 2020-03-04 16:39:11 回复(0)