C ++:为什么这个逻辑表达式计算为false?

时间:2014-06-10 02:44:28

标签: c++ boolean boolean-expression

int a = 10, b = 12, c = 8

!((a < 5) || (c < (a + b)))

我刚刚在编译器中尝试过它并且它是错误的。

2 个答案:

答案 0 :(得分:3)

内在表达:

(a < 5) || (c < (a + b))

评估a < 5false(因为a10)而c < (a + b)true(因为8较少比10+12)。在falsetrue上执行布尔“或”操作会为您提供true

而且,鉴于您对该值做的下一件事是!(反转),true会变成false

答案 1 :(得分:0)

c < (a + b) == 8 < (10 + 12) == 8 < 22 == true
a < 5 == 10 < 5 == false
(a < 5) || (c < (a + b)) == false || true == true
!((a < 5) || (c < (a + b))) == !(true) == false