2011-08-05 3 views
0

私は誰かのコードを探していますし、彼らがやった:これは論理演算子 "and"の適切な使用ですか?

if (myNum > (num1 && num2 && num3))

... myNumはNUM1、NUM2、およびNUM3よりも大きい場合にコードを実行することを意図して。これは使えますか?

編集:ありがとうございます。私はそれがうまくいくとは思っていませんでしたが、私は専門家ではないので、私は私が人々に尋ねると思っていました。

+4

リトルリベラル?それはたとえC#でコンパイルされません。 – alun

+0

これはC#ですか?コンパイルするとは思わない! – V4Vendetta

+3

このコードを入手した人は誰でも、非常に移植性の高いコードを書いています。 –

答えて

3

いいえ - 確かにC#やJavaではありません。あなたが欲しい:

if ((myName > num1) && (myNum > num2) && (myNum > num3)) 

(。それはあなたがここにブラケットを必要としない可能性があります - 私は演算子の優先順位を覚えていることはありません)、JavaやC#で書かれたよう&&があるよう

は、それは動作しません演算子ブールオペランド、ブール結果。コンパイル/実行が難しいタイプの言語である可能性がありますが、は、となると、のいずれかの主流言語で意図された効果が得られるか疑問に思っています。

1

タグの言語はありません。まあ、私はそれがCとJavaScriptで動作するかもしれないと思うが、確かに意図されたものではない。

2

いいえ、それは動作しません。なぜそれが動作しないのかは言語によって異なりますが、質問のタグを付けたすべての言語で最初に評価されます(num1 & & num2 & & num3)。提供(num1 & & num2 & & num3)実際にコンパイルして評価すると、myNum>何かが得られます。

0

これは、少なくともCで間違っています:http://codepad.org/R9IP0ZOr

int main() 
{ 

    int myNum = 10; 
    int num1,num2,num3 ; 
    num1 = 15; 
    num2 = 16; 
    num3 = 17; 
    if (myNum > (num1 && num2 && num3)) 
     printf("%s","YES|GREATER"); 
    else 
    printf("%s","NO|SMALLER"); 
} // prints "YES|GREATER" even though all numbers are greater than myNum 

正しい文は次のようになります。

if( (myName > num1) && (myNum > num2) && (myNum > num3)) 
{ 
} 
+0

これはCです私はそれがコンパイルされ、YESを印刷すると言うでしょう。正しい? –

+0

はい、「YES」と表示され、正しいものです。しかし、それが意味する論理は間違っています:D – DhruvPathak

0

それは有効なJavaScriptコードですが、おそらく書いた人によって予想とは異なる動作しますそれ。

(num1 && num2 && num3)がちょうどmyNum、NUM1、NUM2とNUM3は、事業者との特別なタイプであればそれはC++で働くかもしれないnum3

+0

実際には、 'num1'や' num2'が0の場合、 'num3'の値ではなく0を返すことがあります。 –

+0

非常に真実です。 –

1

の値を返します>と& &が過負荷ので、それは実際にif(myNum > num3)を評価することになります。しかし、おそらくこれを扱うクラスを作る価値はありません。値を仮定

4

は、CまたはC++これは最初の結果はC++、およびいずれかでtrue又はfalseのいずれかであろう

(num1 !=0) && (num2 != 0) && (num3 != 0) 

として

(num1 && num2 && num3) 

を評価するであろうに、intようなタイプのものですCで1または0

次に、myNumをその結果と比較します。

0

それとももう少しfancily:そこにタグ付け

if(Num > Math.Max(Num1,Math.Max(Num2,Num3)))