C++の演算子&と&&、|と||の詳細と区別

1572 ワード

C++の演算子&と&&、|と||の詳細と区別
概要:
&&は論理と演算子、|は論理あるいは演算子で、すべて論理演算子で、両側はboolタイプ&と|は論理演算を行うことができて、またビット演算を行うことができて、両側はboolタイプで、また数値タイプであることができます
違い:
if(A&&B)Aがfalseの場合、式全体がfalseとなり、Bの値は計算されません.if(A&B)Aがfalseの場合、式全体がfalseになりますが、Bの値も計算されます.if(A&&B++)Aがfalseの場合、&&は後の値if(A&B+)を計算しません.Aがfalseの場合、&は後の値を計算します.
&|整数型とbool型の2つの演算規則を事前に定義した
整数型について、&|計算操作数のビット「と」;boolオペランドについて、&|オペランドの論理「与」、「または」を計算する.すなわちboolタイプ&と&&,|と|に対するif判定結果は同じである.整形データ&&は真偽(0または非0)のみを判断し、両方のデータは真またはどちらか一方が偽でなければならない.整形データ&両側のデータについてはビットと演算を行い、計算結果を返しifにこの値論理(AND):true&&false:falseビット(AND):1001 0110&1111:1001 0110(バイナリビット)を判断させる
例:

 //a&b    ,   a b    (  ,    )    ; 
 value = 1 & 1;  //1
 value = 1 & 0;  //0
 value = 0 & 1;  //0
 value = 0 & 0;  //0
 value = 3 & 3;  //3      :11 = 11&11
 value = 3 & 2;  //2      :10 = 11&10
 value = 2 & 3;  //2      :10 = 10&11
 value = 5 & 6;  //4      :100 = 101&110
 value = 213 & 73;  //65

 //a|b    ,   a b    (  ,    )    ; 
 value = 1|1;  //1
 value = 1|0;  //1
 value = 0|1;  //1
 value = 0|0;  //0
 value = 3|3;  //3      :11 = 11 | 11
 value = 3|2;  //3      :11 = 11 | 10
 value = 2|3;  //3      :11 = 10 | 11
 value = 5|6;  //7      :111 = 101 | 110
 value = 213|73;  //221


読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!