在C中使用逻辑OR(||)?

时间:2013-05-20 16:03:22

标签: c logical-operators

我是初学者C程序员,最近我和逻辑运营商合作。

当两个操作数均为零时,逻辑或(||)是否为零。或者工作方式有所不同?

它是如何工作的?有人可以详细解释一下!

2 个答案:

答案 0 :(得分:14)

TRUE  || TRUE  == TRUE
TRUE  || FALSE == TRUE
FALSE || TRUE  == TRUE
FALSE || FALSE == FALSE

在C中,零值为FALSE,任何非零值为TRUE

如果||的左手表达式求值为TRUE,则不评估右手表达式。

答案 1 :(得分:4)

如果其输入的EITHER为真,则逻辑OR(C中的||运算符)的结果为真。类似地,如果其输入的BOTH为真,则逻辑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,则无法评估右手边。