次の 2 つの条件に違いはありますか。
if (a==5)
そしてif (5==a)
?
いいえ、まったく違いはありません。
その式が完全に有効で、常に に評価されるC/C++でエラーをキャッチできるように、5==a
代わりにこの式を記述していました。そうすれば、プログラマーが (誤って) 式を記述した場合、コンパイル エラーが発生します。a==5
a=5
true
5=a
通常、この 2 つは同じです。
定数を最初 ( ) に置くことを推奨する人if (5==a)
もいます。この方法では、タイプを間違え=
て get:の 1 つを省略した場合if (5=a)
、コンパイラはエラー メッセージを表示しますが、if (a=5)
コンパイルして実行しますが、おそらく希望どおりにはなりません。
一部のコンパイラは後者に対して警告を発します (たとえば、最近の gnu do の繰り返し) が、他のコンパイラは警告を発しません (Visual C++ は後者の 1 つです)。
「a」が == をオーバーライドするオブジェクトを指している場合、理論上は異なる結果が得られる可能性があります。