【问题标题】:Working of Logical OR ( || ) in C? [duplicate]逻辑或(||)在 C 中的工作? [复制]
【发布时间】:2013-05-20 16:03:22
【问题描述】:

我是一名初级 C 程序员,最近在使用逻辑运算符。

当两个操作数都为零时,逻辑或 (||) 为零。还是工作方式有些不同?

它是如何工作的?谁能详细解释一下!

【问题讨论】:

  • 如果两个操作数都为零,则逻辑 OR (||) 为零。 -> 是的
  • 这个问题有点讽刺的名字
  • C 标准没有发明新的 OR 操作
  • 顺便问一下你为什么问?您是否遇到过并非如此的情况?如果是这样,请确保在使用 SINGLE | 的程序中没有拼写错误,例如 if ( a | b ) { do_something(); } ... 因为| 是一个有效的运算符,它是按位或,并产生与逻辑或不同的结果||

标签: c logical-operators


【解决方案1】:
TRUE  || TRUE  == TRUE
TRUE  || FALSE == TRUE
FALSE || TRUE  == TRUE
FALSE || FALSE == FALSE

在 C 中,零值是 FALSE,任何非零值都是 TRUE

此外,如果 || 的左侧表达式计算结果为 TRUE,则不计算右侧表达式。

【讨论】:

    【解决方案2】:

    如果任一输入为真,则逻辑或(C 中的|| 运算符)的结果为真。如果两个输入都为真,则类似的逻辑 AND(C 中的&& 运算符)为真。

    A  B   A OR B   A AND B
    0  0     0        0
    0  1     1        0
    1  0     1        0
    1  1     1        1
    

    (请注意,0 为 FALSE,其他为 TRUE,1 通常用于上述真值表中)。

    通过组合这些运算符和逻辑否定运算符(C 中的!),您可以创建所需的任何运算,例如“异或”(如果其输入中恰好有 1 个为真,则为真)可以写成(A || B) && !(A && B).

    请注意,在 C 中,如果没有必要,不能保证运算符的两侧都会被计算 - 例如,如果 && 运算符的左侧计算结果为 false,则计算右侧没有意义一边。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-20
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 2020-08-15
      • 1970-01-01
      相关资源
      最近更新 更多