【发布时间】:2014-07-30 16:30:42
【问题描述】:
int a = 10, b = 12, c = 8
!((a < 5) || (c < (a + b)))
我刚刚在编译器中尝试过,结果是错误的。
【问题讨论】:
-
逐步分解并告诉我们您认为每一步应该产生什么结果。
-
糟糕!我被括号弄糊涂了。没关系!
标签: c++ boolean boolean-expression
int a = 10, b = 12, c = 8
!((a < 5) || (c < (a + b)))
我刚刚在编译器中尝试过,结果是错误的。
【问题讨论】:
标签: c++ boolean boolean-expression
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
【讨论】:
内心的表达:
(a < 5) || (c < (a + b))
将a < 5 评估为false(因为a 是10)和c < (a + b) 作为true(因为8 小于10+12)。对false 和true 执行布尔“或”运算得到true。
而且,鉴于您对该值执行的下一件事是!(反转),那么true 将变成false。
【讨论】: