を含む条件式& &および||、それらは常に0または1に評価されますか?真の条件の場合、1以外の数も可能ですか?私はこのような変数を割り当てたいので頼んでいます。Cでは条件式は常に0または1と評価されますか?
int a = cond1 && cond2;
私は次のようにしなければならないかと思いました。
int a = (cond1 && cond2)? 1:0;
を含む条件式& &および||、それらは常に0または1に評価されますか?真の条件の場合、1以外の数も可能ですか?私はこのような変数を割り当てたいので頼んでいます。Cでは条件式は常に0または1と評価されますか?
int a = cond1 && cond2;
私は次のようにしなければならないかと思いました。
int a = (cond1 && cond2)? 1:0;
論理演算子(&&
、||
、および!
)すべてが1
または0
のいずれかに評価されます。
C99§6.5.13/ 3:
そのオペランドの両方が
0
に等しくない比較する場合&&
オペレータが1
を得なければなりません。それ以外の場合は、0
となります。結果はタイプint
です。
C99§6.5.14/ 3:
そのオペランドのいずれかが
0
に等しくない比較する場合||
オペレータが1
を得なければなりません。それ以外の場合は、0
となります。結果はタイプint
です。
C99 6.5.3.3/5:
、そのオペランドの値と等しい場合は、そのオペランドの値が0
、1
に等しくない比較した場合、論理否定演算!
の結果は0
ある
0
。結果はタイプint
です。 !Eという表現は(0 == E)と等価です。左から右へ
(私は便利なC11のコピーは持っていませんが、論理演算子の仕様は変更されていません)。 –
'&&'
The logical-AND operator produces the value 1 if both operands have nonzero
values. If either operand is equal to 0, the result is 0. If the first operand of a
logical-AND operation is equal to 0, the second operand is not evaluated.
'||'
The logical-OR operator performs an inclusive-OR operation on its operands.
The result is 0 if both operands have 0 values. If either operand has a nonzero
value, the result is 1. If the first operand of a logical-OR operation has a nonzero
value, the second operand is not evaluated.
論理ANDおよび論理OR式のオペランドが評価されています。第1オペランドの値がオペレーションの結果を決定するのに十分である場合、第2オペランドは評価されません。これを「短絡評価」といいます。最初のオペランドの後にシーケンスポイントがあります。
ありがとう、:)
これは質問に答えません。 –
実際には、あなたの主要な要件は何ですか?なぜあなたはこれらの変数を割り当てるつもりですか? –