int a = 5;
if(a = 5)
{
cout<<"111111"<<endl;
}
if(a = 0)
{
cout<<"22222"<<endl;
}
結果は
111111 続行するには何かキーを押してください
いくつかのコメントに基づいて、成功を割り当て、結果は true です。</p>
「a = 0」および「a = 1」は成功を割り当てる必要がありますが、結果は最初に実行されたものだけです....
なぜ ?
int a = 5;
if(a = 5)
{
cout<<"111111"<<endl;
}
if(a = 0)
{
cout<<"22222"<<endl;
}
結果は
111111 続行するには何かキーを押してください
いくつかのコメントに基づいて、成功を割り当て、結果は true です。</p>
「a = 0」および「a = 1」は成功を割り当てる必要がありますが、結果は最初に実行されたものだけです....
なぜ ?
いくつかのコメント?それは危険に思えますが、この場合は正しくありません。
operator=
on sの結果はint
、割り当てられた値です。この場合、a = 5
結果は 0になります。5
a = 0
5
true
0
false
割り当てによって値が割り当てられる理由については、複数の割り当てがある場合を考えてみましょう。
a = b = 5;
これは次と同じです。
a = (b = 5);
したがって、これが期待どおりに機能するには、(b = 5)
5 を返す必要があります。
isの結果とa=5
is5
の結果なので、プログラムは次のようになります。a=0
0
int a = 5;
if(5)
{
cout<<"111111"<<endl;
}
if(0)
{
cout<<"22222"<<endl;
}
if ステートメントはブール値を必要とするため、暗黙的に5
変換true
および0
変換します。false
したがって、プログラムは次のようになります。
int a = 5;
if(true)
{
cout<<"111111"<<endl;
}
if(false)
{
cout<<"22222"<<endl;
}
したがって、「111111」のみが出力されます。
"いくつかのコメントに反して,代入成功,結果は true " 代入の結果は左辺の式の結果です。
「a = 0」および「a = 1」は成功を割り当てる必要がありますが、結果は最初に実行されたものだけです....
いいえ。0
は間違っています。
if(0) { /* some code which will never execute */ }
このif
ステートメントは、括弧内の式の結果を評価します。つまり、条件をチェックする前に、式自体を完全に評価する必要があります。