在 if ... else 语句中,else 子句可以嵌套 if ... else 语句,但 if 子句不可以,因为会造成二义性。
答案选B。命题人玩的是‘偷换概念’:else 确实可嵌套,但 if 也能嵌套,题目却把两者对立起来,利用‘二义性’这个术语误导你。拿到题先拆成两半看:前半句真,后半句假,整体即假。
考生容易把‘二义性’当成 else 能否嵌套的唯一判据,从而误以为 if 不能嵌套是因为会二义。其实 if 嵌套完全合法,只是没有 else 参与,所以不存在二义性。还有人会纠结‘if(a=b)’这种赋值陷阱,但这题纯考结构,别被带偏。
【考点】if-else 配对规则|嵌套控制流|二义性的真正含义 【命题视角】这道题属于‘反常识表述’类陷阱。命题人故意把两个都合法的语法点拆成‘一真一假’的诡辩句式,让你以为‘else 可嵌套’是特例,而‘if 不可嵌套’是限制。其实 C++ 语法里,if 完全可以嵌套,只要配对规则清晰就行。 【解题心法】拿到这种判断题,第一步别急着信题干,先把‘else 可嵌套 if 不可嵌套’拆开看。先看前半句:else 能否嵌套 if?完全能,比如 if(c1){ if(c2){...} else{...} } 语法合法。再看后半句:if 能否嵌套?也合法,if(c1){ if(c2){...} } 毫无问题。既然两半都真,题干说‘else 可嵌套但 if 不可’就是错的,答案必然是 B。 【避坑指南】最容易掉进的坑是‘二义性’这个词。在 C++ 里,二义性特指 else 与多个 if 的归属歧义(如 if(a) if(b) x=1; else y=2;),但题目后半句说的‘if 子句不可以嵌套’并不是因为二义性,而是命题人故意编造的假话。很多考生看到‘二义性’就慌,以为 if 嵌套会导致二义,其实不会——if 嵌套时没有 else 参与,配对关系天然唯一,根本不存在二义性。另外,别把‘if(a=b)’这种赋值陷阱带进来,这题纯粹考结构,跟赋值无关。 【考频与趋势】控制结构在题库共考过 429 题,覆盖 7 个级别(2009-2026),其中 2025 年高达 160 题,2024 年 138 题,2023 年 81 题,呈现明显上升趋势,尤其在 GESP 二级(133 题)和一级(133 题)中占比最高。分支结构共 181 题,2026 年突增至 100 题,说明命题人正加大对语法细节的考查力度。GESP 二级作为入门进阶,这类概念辨析题出现频率稳定,且近年题目更偏向‘反直觉’表述,目的是筛掉只背口诀的考生。 【未来预测】基于 2023-2026 年数据,控制结构与分支结构考题逐年递增,尤其是 2026 年分支结构达到 100 题,显示命题趋势是从‘基础用法’转向‘陷阱辨析’。未来 GESP 二级及一级考试中,类似‘偷换概念’的判断题(如 else 与 if 的嵌套对比、二义性术语误导)大概率会持续出现,甚至可能结合更多实际代码片段来增加迷惑性。暂无足够依据预测具体题型变化,但可确定:对语法规则的深层理解将比死记硬背更重要。