4

私はこれを本で読んで、それがどのように機能するのか、そしてあなたがそのようなことをするのか、そしてどのような理由でそれをするのか疑問に思っていました。私はあなたが戻ることができることを理解します(x>y)、しかしなぜあなたはそうしfalse == (x > y)ますか?

4

4 に答える 4

9

より冗長な書き方です

x <= y

の結果x > yが評価され、 と比較されfalseます。の結果x > yはブール値なので、それは書き込みと同じです

!(x > y)  // an == true is implied here if you don't add it yourself

もちろん、これは書くことと同じです

x <= y
于 2013-03-08T09:25:24.760 に答える
1

== の左側に不変の値を配置し、右側に変数を配置するのは、非常に一般的な構造です。これは、等号の 1 つを誤って見逃した場合に備えています。このようにして、コンパイラはエラーを強調表示します。

たとえば、誤って入力した場合

if(a = true){...}

これは、a の値を true に設定するため、中かっこ内のコードを常に実行します。

ただし、誤って入力した場合

if(true = a){...}

true の値を変更することはできないため、コンパイラは警告を発するはずです。

この特定の例では、二重の等号を必要とせずに式を記述するはるかに優れた方法があります(以前のすべての回答を参照)

于 2013-03-08T11:27:07.327 に答える
1

3 つの変数があり、すべてがバイナリ値を取るとします。これを使用して、いくつかの結果を実装できます。このように。

例 : if(a==(b>c)) は最初のシナリオを表します。

 A   B    C
 0   0    0
 0   0    1
 0   1    0
 0   1    1
 1   0    0
 1   0    1
 1   1    0
 1   1    1
于 2013-03-08T09:40:38.903 に答える
1
  • if(x <= y)
  • if(!(x > y))
  • if((x>y) == false)

それらはすべて同じ条件に評価されます。書き方が違うだけです。私は通常、より読みやすいものを使用することを好みます。

于 2013-03-08T09:27:56.973 に答える