GESP 三级 · GESP 202512 C++ 三级 第 5 题

选择题 · 答案 B

← 整套速查表 GESP 三级 全部真题

题目

已知字符串 s = "C++ Programming",下列程序运行的结果是( )

cout << (int)(s.length() | 3) << endl;
答案:B

解题思维

答案B。数组和位运算的代码追踪要特别小心:数组下标从0开始,位运算结果可能不直观。建议画图辅助。

常见错误

位运算追踪时建议把数字写成二进制形式再逐位计算。

详细解析(节选)

1. 🎯 考纲定位(考点定位)

本题考查《GESP 考试大纲》三级「基础语法与运算」模块中位运算符与类型转换的复合考查。命题人卡住的是考生对 size_t 与 int 混合运算时类型提升规则的盲区——绝大多数学生只会机械计算长度,却忽略位运算优先级高于隐式转换,导致在遇到 (int)(expr | 3) 这类结构时产生误判。

2. 🧠 解题思维(拆解与通法)

看到 cout << (int)(s.length() | 3) 先提取核心表达式。s.length() 返回 15(size_t 类型,二进制 1111),3 是 0011。按位或运算:1111 | 0011 = 1111 仍为 15。外层 (int) 强制转换不改变数值。通法:遇到混合运算符,先确定优先级(位运算符高于隐式转换),再从左到右计算,最后留意类型转换是否影响结果。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断