← 2022 · 华为海思 笔试

推荐答案 测试一下

foo-(1<a)foo-1<a的结果一致

A.正确 B.错误
单选题 中等 笔试真题单选

参考答案

正确答案是B.错误。题目表达式存在笔误,原意应为比较“foo-(1<a)”与“foo-1<a”的结果是否一致。根据C/C++语言运算符优先级规则:关系运算符(<)优先级低于算术运算符(-),但高于赋值运算符。对于第一个表达式“foo-(1<a)”,先计算括号内的关系运算“1<a”,结果为布尔值(通常1表示真,0表示假),然后用foo减去该布尔值(0或1)。对于第二个表达式“foo-1<a”,由于算术减法“foo-1”优先级高于关系运算符“<”,因此先计算“foo-1”,然后将其结果与a进行关系比较。因此两个表达式的结果可能不同,例如设foo=5,a=0:第一个表达式变为5-(0)=5;第二个表达式变为(5-1)<0即4<0为假(0)。结果不一致。故判断为错误。

涉及知识点

  • C语言运算符优先级
  • 关系运算符与算术运算符混合运算
  • 布尔值在算术表达式中的隐式转换
  • 括号对运算顺序的影响
登录后反馈错题
下一题 →