そのような連続したまたはの束を使用できますか?
if (x==0||7||14||21||-7||-14){y=THURSDAY;}
それは私のために働いていないようです。どうしたの?できます|| 同じ条件の条件が述語の場合、他の2つには使用されませんか?
そのような連続したまたはの束を使用できますか?
if (x==0||7||14||21||-7||-14){y=THURSDAY;}
それは私のために働いていないようです。どうしたの?できます|| 同じ条件の条件が述語の場合、他の2つには使用されませんか?
cでは、0以外はブール値の真と見なされます。したがって、ifは次のように読み取ることができます:if x==0またはtrueまたはtrueまたはtrue...おそらくあなたが意味したのはif (x==0 || x==7 || x==14 ...)
たくさんのifを使用することもできますが、繰り返しパターンがあるため、モジュラスのようなものがより適切です。つまり
if( x>= -14 && x<= 21 && (x %7) == 0)
すべての答えは正しいです..しかし重要なのは理由です...ブール式を使用する場合、コンパイラにif(x == 0 || .... <は同じ変数を参照する)と想定させることはできません。評価する変数を常に指定する必要があります。
if(x == 0 || x == 7 || ...) { ... }
また、progの大部分は事実です。言語にはcのように省略形があり、0でないものはすべて真ですが、Javaには同じことが当てはまりません。速記で基本を区別するために非常に注意してください。
よろしく
表現
x == 0||7||14||21||-7||-14
の省略形ではありません
x == 0 || x == 7 || x == 14 || ...
代わりに、式の結果と比較x
されます。これは1になります。 0 || 7 || 14 || ...
||
演算子が最初に左側のオペランドを評価することを忘れないでください。値が0の場合、右のオペランドを評価します。両方のオペランドが0値の場合、式は0(false)と評価されます。左側のオペランドがゼロ以外の場合、式は1(true)と評価され、右側のオペランドはまったく評価されません。
基本的に、コードは次のように評価されます
x == 0 || (7 || (14 || (21 || (-7 || -14))))
左のオペランドは0であるため、右のオペランドを評価します(部分式(7 || (14 || (21 ||...)
。7
はゼロ以外であるため、式は1と評価されます(残りのオペランドは評価されません)。
複数の値に対してテストx
する場合は、次のように複数の等式を記述する必要があります。
if (x == 0 || x == 7 || x == 14 || ...)
ifステートメントを次のように変更します。
if (x==0 || x==7 || x==14 || x==21 || x==-7 || x==-14)
{
y=THURSDAY;
}
一度に複数の値に対して変数をテストすることはできません。
ではC
、ブール論理の目的で、ゼロ以外のすべての値がtrueとして評価されます。そのため、元のステートメントの各番号は、or
独自の条件として機能します。したがって7
、trueと評価され、条件が満たされます。
試す
if (x==0||x==7||x==14||x==21||x==-7||x==-14)
{
y=THURSDAY;
}
あなたがそれを書いた方法、7,14..は真として評価されます。
0は偽、残りは真です。