正在载入在线练习界面,本页内容可直接阅读…
AK CSP › CSP-S 2023 第一轮真题 › 第9题
CSP-S 2023 第一轮 第9题:假设我们有以下的C++代码:
题目
假设我们有以下的 C++ 代码: int a = 5, b = 3, c = 4; bool res = a & b || c ^ b && a | c; 请问,res 的值是什么?() 提示:在 C++ 中,逻辑运算的优先级从高到低依次为:逻辑非(!)、逻辑与(&&)、逻辑或(||)。位运算的优先级从高到低依次为:位非(~)、位与(&)、位异或(^)、位或(|)。同时,双目位运算的优先级高于双目逻辑运算;逻辑非与位非优先级相同,且高于所有双目运算符。
选项
- A. true
- B. false
- C. 1
- D. 0
答案
A
题解
答案选 A. true。
按题目给出的优先级,表达式等价于:
``cpp bool res = (a & b) || ((c ^ b) && (a | c)); ``
先计算左边的 a & b。位与运算要求对应位都为 1,结果才为 1:
``text 5:0101 3:0011 &:0001 → 1 ``
整数 1 转换为布尔值是 true。因此整个表达式是:
``cpp true || ... ``
逻辑或 || 左侧已经为真,右侧会被短路跳过,最终 res 为 true。
注意:虽然默认用 cout << res 会输出 1,但题目问的是 bool 变量的值,因此选 A。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号