在 C++ 代码中,如果两个变量 __ 和 ____ 都只包含下划线( _ ),但数目不同,则可能导致编译器无法识 别,而报告变量重复定义。
看到题先想C++标识符规则:下划线是合法字符,但标识符唯一性取决于完整字符序列而非字符种类。不同数量下划线构成不同标识符,编译器逐字符比对,不会因数量差异报告重复定义。此类题通法是区分"字符种类"与"字符数量"对标识符的影响。
选项A错误在于视觉相似性误导。命题人利用"下划线都是下划线"的直觉,但标识符唯一性取决于完整字符串。边界处单下划线_与双下划线__是合法区分名,不存在识别冲突。
本题考查的是《GESP 考试大纲》一级C++模块中的"变量定义"与"标识符规则"。命题人特意在试卷里放这道题,是因为它卡住了绝大多数考生的直觉陷阱——以为"都是下划线"就必然冲突,却忽略了C++标识符的唯一性原则(identifier uniqueness):编译器逐字符比对完整字符串,__ 与 ____ 是两个不同的标识符,不会导致重复定义错误。
看到题先想"C++标识符由字母、数字、下划线组成,且区分大小写"。关键观察是:题目只强调"都只包含下划线",却没提"数量相同"。推理链条:不同数量的下划线 → 不同长度的标识符 → 编译器将其视为两个独立标识符 → 不会报告重复定义。这一类题的通法是:先确认标识符规则(允许下划线),再判断是否满足唯一性条件(字符序列完全相同)。