c中的逻辑AND和OR

sou*_*912 5 c

在a && b中,如果a和b都等于1,则返回true.如果a = -1且b = -1,则表达式也返回true.类似于|| b,其中a = -1并且b = 0,它返回true.任何人都可以解释一下原因.

orl*_*rlp 14

a && b 返回1时,两个 ab为零,而不仅仅是当他们等于1,否则返回0.

a || b返回1时中的至少一个 ab非零,而不仅仅是当它们中的一个等于1,否则返回0.

举一些例子:

   0 &&  0 -> 0
   1 &&  0 -> 0
   1 &&  1 -> 1
   2 &&  1 -> 1
  -1 && -1 -> 1
-100 &&  0 -> 0

   0 ||  0 -> 0
   1 ||  0 -> 1
   0 ||  1 -> 1
  -1 ||  0 -> 1
-100 || 20 -> 1
Run Code Online (Sandbox Code Playgroud)


md5*_*md5 9

C11(n1570)§6.5.13al3 p 99说:

如果&&运算符的两个操作数都不等于0,则它将产生1; 否则,它产生0.

-1是非零值,所以-1 && -11.