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またはの少なくとも1つが 1に等しい場合だけでなく、aまたはbゼロ以外の場合は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
于 2012-07-22T12:04:26.313 に答える
10

C11(n1570)§6.5.13al3 p 99 say:

&&演算子は、両方のオペランドが0と等しくない場合、1を返します。それ以外の場合は、0になります。

-1はゼロ以外の値であるため、も同様-1 && -1です1

于 2012-07-22T12:08:41.840 に答える
2

&&のMSDNページ:

論理積演算子は、両方のオペランドの値がゼロ以外の場合、値1を生成します。

明らかに、あなたの例では両方のオペランドが-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(&&)は、両方の条件が真の場合にのみ続行します。または演算子ie(||)の場合と同様に、2つの条件の少なくとも1つが真の場合に続行します。

于 2017-09-30T17:37:14.773 に答える
0

論理演算子は0または1のいずれかを返します。&&演算子は、両方のオペランドが0でない場合は1を返します。それ以外の場合は、0を返します。if(x)、while(x)などのステートメントは、引数が0でない場合に実行されます。他のすべての+veおよび-ve引数については、実行されます。

于 2012-07-22T21:05:34.883 に答える