理解while语句中的逻辑表达式

时间:2018-01-14 15:40:16

标签: c++ conditional-statements boolean-logic boolean-expression

我有代码从键盘读取数字并对它们求和,并在循环终止时输出总和。当输入的数字为负数并且可被2整除或者它是正数且可被3整除时,循环终止。但它无法正常工作。在什么条件下问题在哪里?

while(!(n<0 && n%2==0) || !(n>0 && n%3==0))

2 个答案:

答案 0 :(得分:3)

这与否定逻辑表达式有关。最简单的方法是编写一个正面表达式并用!来否定它:

!((n<0 && n%2==0) || (n>0 && n%3==0))

之后,您可以使用布尔代数规则打开括号:当您打开否定语句时,在每个组件之前添加一个否定,并将 OR 替换为 AND ,反之亦然:

!(n<0 && n%2==0) && !(n>0 && n%3==0)

使用此规则,您可以继续打开括号。

答案 1 :(得分:2)

hidden_field(object_name, method, options = {})

NOT(n为负,n可被2整除)或NOT(n为正,n可被3整除)。

这是一个逻辑错误NOT(A OR B)与(NOT A或NOT B)不相同,它等于NOT A和NOT B.

退房: http://integral-table.com/downloads/logic.pdf