web-dev-qa-db-ja.com

二重代入の違い/利点は何ですか?

利点はありますか/ Java以下で行うのは悪い習慣です

x = x = 5

同僚のコードの1つでそれを見て、なぜ彼が二重割り当てを行うのかと驚きましたか?

これはx = 5と同じですか、それともx = x= 5が違いを生むのですか?

3
rao

利点はありますか/以下を実行するのは悪い習慣ですか

x= x = 5

言語は指定していませんが、ほとんどのC言語のような言語では、割り当ての値が割り当てられる値です。つまり、式x = 5の値は5であり、求めている式は基本的に次のものと同じです。

x = 5;
x = 5;

追加の割り当てには価値がないため、それを行う理由はありません。

さて、次のように、2つの(またはそれ以上の)変数が同時にいくつかの値に割り当てられることがあります。

x = y = 5;

この場合、yに5を割り当て、その式の値(ここでも5)をxに割り当てます。これにより、xyの両方が同じ値を取得することが保証されます。

別の可能性としては、割り当ての1つが比較対象であり、結果が比較対象の変数に割り当てられていた可能性があります。

x = x == 5;

これは二重代入ではなく、ブール式x == 5からxへの代入です。つまり、式の前のxの値が5である場合、xtrue(一部のゼロ以外の整数)の値を取得します。 xが5でない場合、xfalse(つまり0)に設定されます。

8
Caleb