5

在 a && b 中,如果 a 和 b 都等于 1,则返回 true。如果 a=-1 且 b=-1,则表达式也返回 true。a||b 的情况类似,其中 a=-1 b = 0,它返回true。谁能解释一下原因。

4

6 回答 6

14

a && b当和 为非零时 返回 1 ,而不仅仅是当它们等于 1 时。否则返回 0。ab

a || b当or中的至少一个 为非零时返回 1 ,而不仅仅是当其中一个等于 1 时返回 1。否则返回 0。ab

举一些例子:

   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
于 2012-07-22T12:04:26.313 回答
10

C11 (n1570) §6.5.13 al 3 p 99说:

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

-1 是一个非零值,因此-1 && -1也是1

于 2012-07-22T12:08:41.840 回答
2

&& 的 MSDN 页面上

如果两个操作数都具有非零值,则逻辑与运算符产生值 1。

显然,在您的示例中,两个操作数都是 -1,因此它们将产生 1。

在同一页面上,列出了||

如果任一操作数具有非零值,则结果为 1。

在您的情况下,一个操作数是 -1,因此结果是 1

于 2012-07-22T12:05:45.003 回答
1

如果两个操作数都具有非零值,则 AND 返回 1。如果任一操作数具有非零值,OR 返回 1。

于 2012-07-22T12:07:25.097 回答
1

和运算符 ie (&&) 仅在两个条件都为真时才会继续,而在 or 运算符 ie(||) 的情况下,如果两个条件中的至少一个为真,则将继续..

于 2017-09-30T17:37:14.773 回答
0

逻辑运算符返回 0 或 1。如果 && 运算符的两个操作数都不为 0,则返回 1。否则,它返回 0。如果参数不为 0,则执行 if(x)、while(x) 等语句。对于所有其他 +ve 和 -ve 参数,它都会被执行。

于 2012-07-22T21:05:34.883 回答