GESP 三级 · GESP 202403 C++ 三级 第 20 题

判断题 · 答案 B

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

题目

在C++语言中,(010<<1) 执行结果是 $100$。( )

答案:B

解题思维

这题别急着算左移,先看数字本身。C++里0开头不是十进制,是八进制,010等于十进制8,左移一位变16,跟题目说的100对不上。

常见错误

学生最容易把010当成十进制的10去算,以为左移一位是20,看到题目给的100更懵,最后可能瞎猜或者纠结进制的细节。其实只要记住0开头就是八进制,010就是8,8左移一位是16,题目说100,显然错。别被左移的‘乘2’口诀带偏了,先确认进制才是关键。

详细解析(节选)

考点定位

本题考查C++基础语法中的进制识别与位运算,属于GESP三级必考内容。命题人专门挖了个坑:数字010,乍一看像十进制的10,其实0开头在C++里代表八进制,这是很多考生容易忽略的细节。

概念拆解

在C++中,整数的进制由书写形式决定:

八进制的每一位只能是0~7。所以010这个八进制数,按权展开就是 $0 \times 8^2 + 1 \times 8^1 + 0 \times 8^0 = 8$,也就是十进制的8。

命题视角

命题人想考的就是这个“视觉盲区”。题目里写的是010,不是10,也不是0xA,而是010。很多学生看到左移运算(<<),脑子里立刻跳出“左移一位等于乘2”的结论,然后直接拿10去乘2得到20,再跟题目给的100对比,发现对不上,就开始怀疑自己或者乱选。其实真正的问题不在于左移,而在于先把010转换成十进制。一旦意识到010是八进制的8,问题就迎刃而解了。

思考心法

拿到这类题,脑子里第一步要问: 1. 这个数是不是0开头?如果是,它是八进制还是十六进制? 2. 如果是八进制,它等于十进制的多少? 3. 再按位运算规则算结果。 具体到这道题:010是八进制,转十进制是8;8的二进制是1000;左移一位就是10000,即十进制16。

避坑指南

最容易掉进的坑就是把010当成十进制的10。学生往往会直接计算10<<1=20,然后看到题目说结果是100,就会觉得“是不是我算错了?”或者“题目是不是有其他含义?”。其实题目说的100是十进制,而8<<1=16,显然16≠100,所以原命题是错的。记住:0开头的数字,永远先按八进制算,别被左移的“乘2”口诀带偏了。

考频与趋势

从历史数据看,C++基础语法在题库中共考过1295题,其中GESP三级就占了215题,是三级考试中的高频考点。按年份分布,2023年考了287题,2024年考了413题,2025年考了401题,2026年考了109题,说明这类基础概念题近年来一直是命题重点,尤其是进制识别和位运算的结合,几乎年年都有。

预测

基于2024年高达413题的考频和2025年401题的延续性,可以预见未来这类考察进制识别与位运算结合的单选题仍将是GESP三级乃至更高级别考试的常客。命题人可能会在题目中把进制标志做得更隐蔽,比如用017、0100这样的数字,或者把位运算和进制转换嵌套得更深,比如先转进制再移位,或者移位后再转进制,总之核心还是考你是否真正理解C++中数字书写的进制规则。

因此,这道题选B(错误)是绝对正确的,因为010<<1的结果是16,而不是100。

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