我是初学者C程序员,最近我和逻辑运营商合作。
当两个操作数均为零时,逻辑或(||
)是否为零。或者工作方式有所不同?
它是如何工作的?有人可以详细解释一下!
答案 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,则无法评估右手边。