下列关于 C++ 语言中变量的叙述,正确的是( )。
这题考的是变量作用域和命名规则。别被'类型不同'这种强干扰项带偏,核心就一句话:C++ 允许同名变量共存,唯一合法的途径就是它们的作用域不同。拿到题先想'名字冲突怎么解决',直接锁定作用域隔离这个机制,其他选项全是绝对化表述,大概率是坑。
最容易错选 C,觉得'类型不同就能共存',这是把变量当成全局对象在想了。其实只要在同一作用域内,哪怕类型再不同,编译器也会报重定义错误。还有人选 B,以为名字不能重复,忽略了局部变量会隐藏同名全局变量的机制。记住:名字只在它声明的作用域内有效,出了那个范围,同名就是两个完全无关的变量。
考点与命题视角
本题直接考查 C++ 四级核心概念:变量的作用域。命题人想确认你真正理解'名字冲突'的解决机制——同名变量必须藏在不同作用域里,而不是靠类型或生命周期来规避。四级下册第四章正是讲作用域,这题就是考纲原文的再现。注意看选项里的绝对化表述:A 说'一直使用'、B 说'不能相同'、C 说'类型必须不同',这些词在编程里往往就是错的,因为变量有生命周期,名字有作用域,没有所谓的'一直'和'绝对不能'。
概念辨析:作用域 vs 类型
很多人混淆'同名'和'类型不同'的关系。实际上,C++ 允许在不同作用域中声明同名变量,这叫'局部隐藏'。例如,一个函数里可以定义 int a,全局也可以定义 int a,它们互不干扰。但如果你在一个作用域里先定义了 int a,又在同一个作用域里再定义 int b,哪怕类型不同,编译器也会报错,因为名字 a 已经占用了。
逐项拆解思路
看到题先锁定'同名变量能否共存'这个核心命题。逐个排除:
反命题思维
反命题视角:若把'作用域不同'改成'类型不同',答案立刻变成 C,说明命题人故意用'类型'这个强干扰项卡住机械记忆者。真正的训练是:刷到'变量名冲突'题,先问自己——'它想考我作用域还是类型?'——因为作用域才是解决同名变量共存的正解。
考频趋势与预测
从题库数据看,'基础语法'模块共考过 1295 题,覆盖 11 个考试级别(2008-2026)。其中 2023 年考了 287 题,2024 年 413 题,2025 年 401 题,2026 年 109 题,呈现逐年高位震荡后小幅回落的趋势。在分赛事分布上,GESP 四级考了 186 题,占比约 14.4%,是四级考试中高频考点之一。结合 2023-2026 年每年都有大量题目涉及变量作用域、命名规则和局部隐藏机制,可以判断这类概念题在未来 GESP 四级考试中仍将保持高频率出现,命题人可能会继续用'绝对化表述'(如'一定''必须''不能')作为陷阱,同时增加对多作用域嵌套场景的考查,比如函数内定义局部变量与全局同名变量的交互。
暂无足够依据预测具体年份的题型变化,但基于现有数据,建议重点复习作用域隔离机制,警惕任何试图用'类型'或'生命周期'替代'作用域'来解释同名变量共存的选项。