在 C++ 语言中,判断 $a$ 等于 $0$ 或 $b$ 等于 $0$ 或 $c$ 等于 $0$ 的正确的条件表达式是( )。
这道题考的是逻辑表达式的等价转换。拿到题先别急着写代码,把题意翻译成数学语言:‘a、b、c 中至少有一个等于 0’。然后利用德摩根定律,把‘至少有一个等于 0’反过来想成‘三个都不等于 0’的否定,这样就能一眼看出答案。
最容易掉进两个坑:一是把‘或’看成‘且’,误选 A,以为三个数都得是 0 才对;二是分不清赋值和比较,看到 a=0 就以为是对的,其实那是把 0 赋给 a,不是判断相等,C++ 里判断相等必须用 ==。德摩根定律用反了也是重灾区,记住口诀:and 的否定变 or,or 的否定变 and。
这道题考查的是 C++ 逻辑表达式与德摩根定律的应用。核心概念很简单:
德摩根定律:
赋值与比较:
= 是赋值,== 才是比较相等。这是 C++ 里最容易混淆的地方,必须时刻警惕。命题人特别喜欢在‘或’和‘且’的否定上挖坑。题目问的是‘a 等于 0 或 b 等于 0 或 c 等于 0’,直接写 a==0||b==0||c==0 当然没错,但选项里没有这个朴素形式。命题人想考的是你是否掌握德摩根定律:能不能把‘至少有一个等于 0’转化为‘三个都不等于 0’的否定。