0

重複の可能性:
等しいかどうかを確認する方法は?(0 == i)または(i == 0)
i==0と0==iの間に違いはありますか?

私は人々がの代わりにif(condition)asを使用することを何度も見ました。それは良い習慣だと言われていますが、誰かがその理由を説明できますか?どんな違いがあるの ?むしろ、それは私の意見では読みやすさを低下させます。if(0==x)if(x==0)

4

5 に答える 5

10

読みやすさが低下するという事実は、純粋に主観的なものです。x==0(私も同じように感じますが、それは私が他の方法よりも多くのことを扱ってきたので、それに慣れたからです)。

偶発的な割り当てを防ぐために行われます。

if(0=x)

コンパイラエラーが発生します、

if(x=0)

しません。

于 2012-09-24T09:03:57.880 に答える
2

個人的には、私はこの習慣を好みません。しかし、人気が出た理由は次のとおりです。

assignment operatorとブール条件を区別します。

if(x = 0)

この行には、次の 2 つの目的があります。

  1. x に 0 を代入します。
  2. 条件を次のfalseようにします。if(0)

if(0 = x)これらの間違いを避けるために、コンパイル時エラーが発生する方を好む人もいます。

于 2012-09-24T09:07:20.577 に答える
1

if (a = 0)の代わりに入力する入力ミスを単に回避しますif (a == 0)。Yoda スタイルを使用すると、 のif (0 = a)代わりに記述するとコンパイル エラーが発生しますif (0 == a)

一方、それは別の変数であるif (b = a)およびのケースを防止しません。b銀の弾丸はありません。

-Wall -Wextraコンパイル時に使用することをお勧めします。-Werror偏執的になりたい場合は追加し、すべての警告をエラーとして扱います (これを行うことをお勧めします)。

于 2012-09-24T09:06:39.097 に答える
0

はい、読みにくいです(imho)が、これにより、チェックする代わりに割り当ての一般的な間違いを回避できます==

if( 0 = variable ) { // Fail 0 is constant

豆知識: これを「ヨーダ条件」と呼ぶ人もいます

于 2012-09-24T09:05:02.420 に答える
0

いいえ、左に変数名、右に定数などを読むのはあなたの習慣です。しかし、実際には、そのままにしておくと正確なコードが得られます

もし (0=x)

それ以外の

if(0==x) が間違っていると、簡単に変更できるエラーがスローされますが、逆の場合はデバッグが非常に困難です

于 2012-09-24T09:06:03.440 に答える