【问题标题】:C++: Why does this logical expression evaluate to false? [closed]C++:为什么这个逻辑表达式的计算结果为假? [关闭]
【发布时间】:2014-07-30 16:30:42
【问题描述】:
int a = 10, b = 12, c = 8

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

我刚刚在编译器中尝试过,结果是错误的。

【问题讨论】:

  • 逐步分解并告诉我们您认为每一步应该产生什么结果。
  • 糟糕!我被括号弄糊涂了。没关系!

标签: c++ boolean boolean-expression


【解决方案1】:
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

【讨论】:

    【解决方案2】:

    内心的表达:

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

    a &lt; 5 评估为false(因为a10)和c &lt; (a + b) 作为true(因为8 小于10+12)。对falsetrue 执行布尔“或”运算得到true

    而且,鉴于您对该值执行的下一件事是!(反转),那么true 将变成false

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多