a && bでは、aとbの両方が1に等しい場合、これはtrueを返します。a=-1およびb= -1の場合、式もtrueを返します。a|| bの場合も同様です。ここで、a = -1 b = 0の場合、trueを返します。誰かが理由を説明できますか?
6 に答える
a && b
とがゼロ以外の場合は 、 1に等しい場合だけでなく、1を返します。それ以外の場合は0を返します。a
b
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
C11(n1570)§6.5.13al3 p 99 say:
&&演算子は、両方のオペランドが0と等しくない場合、1を返します。それ以外の場合は、0になります。
-1はゼロ以外の値であるため、も同様-1 && -1
です1
。
&&のMSDNページ:
論理積演算子は、両方のオペランドの値がゼロ以外の場合、値1を生成します。
明らかに、あなたの例では両方のオペランドが-1であるため、1が生成されます。
同じページに、||
いずれかのオペランドの値がゼロ以外の場合、結果は1になります。
あなたの場合、1つのオペランドは-1であるため、結果は1になります。
ANDは、両方のオペランドの値がゼロ以外の場合に1を返します。ORは、いずれかのオペランドの値がゼロ以外の場合に1を返します。
演算子ie(&&)は、両方の条件が真の場合にのみ続行します。または演算子ie(||)の場合と同様に、2つの条件の少なくとも1つが真の場合に続行します。
論理演算子は0または1のいずれかを返します。&&演算子は、両方のオペランドが0でない場合は1を返します。それ以外の場合は、0を返します。if(x)、while(x)などのステートメントは、引数が0でない場合に実行されます。他のすべての+veおよび-ve引数については、実行されます。