推荐答案
测试一下
题目
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语言运算符优先级
- 关系运算符与算术运算符混合运算
- 布尔值在算术表达式中的隐式转换
- 括号对运算顺序的影响