2011-02-24 18 views
0
if ((code == S || M || L || N || P || K ||R || C || U || W || O)) 
    { 
     return T; 
    } 

正しくor演算子を使用していますか?私はそれらの文字のいずれかであるために意図されたが、私は正しくありません、あなたが書くべきオペレータ論理演算子||

+0

大丈夫ですよね –

答えて

3

いいえ、それは有効ではありません。まず、それぞれが一重引用符で囲まれなければならず、第二に、各文字と明示的に比較する必要があります。つまり、if(code == 'S' || code == 'M' ...)です。

このような多くの条件を確認する場合は、配列を取得してループを使用します。

1

を使用していた場合、私はわからない -

if ((code == 'S') ||(code == 'M') ||(code == 'L') /*....*/) 
9

あなたが書く必要があるでしょう:

code == 'S' || code == 'M' || code == 'L', etc. 

しかし、あなたも行うことができます:?

if(strchr("SMLNPKJRCUWO", code) != NULL) (or != 0, if you don't have NULL defined) 
{} 

strchrは「もしそうなら、どこに私にポインタを与える文字列のcharであると言いますもしそうでなければ、NULLを返す "(これはちょうどゼロを表すための素晴らしい方法です)。

strchrを使用するには、おそらく#include <string.h>がソースファイルの先頭にある必要があります。

0

いいえ。 ||は、論理的または操作であり、Cコンパイラは、このようにそれを解釈します:私はとにかくケースであることを期待する

if ((code == 'S' || 'M' != 0 || 'L' != 0 || 'N' != 0 || 'P' != 0 || 'K' != 0 || 'R' != 0 || 'C' != 0 || 'U' != 0 || 'W' != 0 || 'O' != 0)) 

。私はあなたが何かあまりカジュアル-languuageなどを望んでいたことを確認、しかし、数学的に正しい午前:

if ((code == 'S' || code == 'M' || code == 'L' || code == 'N' || code == 'P' || code == 'K' || code == 'R' || code == 'C' || code == 'U' || code == 'W' || code == 'O')) 

は、たぶん、あなたがよりよいと明確になりswitchを検討したいです。

switch(code) { 
case 'S': 
case 'M': 
case 'L': 
case 'N': 
case 'P': 
case 'K': 
case 'R': 
case 'C': 
case 'U': 
case 'W': 
case 'O': 
    return 'T'; 
} 
0

号まず第一に、私はcodeはchar型のものであり、単一の文字が含まれていることを仮定しています。あなたはif文を使用したい場合は、あなたが書く必要があると思います

...

if ((code == 'S' || code == 'M' || code == 'L' || ...) 
{ 
    return 'T'; 
} 

はしかし、私はあなたがこのためのスイッチ/ケースを使用することをお勧めします。

switch(code){ 
case 'S': 
case 'M': 
case 'L': 
case 'N': 
case 'P': 
case 'K': 
case 'R': 
case 'C': 
case 'U': 
case 'W': 
case 'O': 
    return 'T'; 
    break; 
case 'V': 
    /* Do something else if code == 'V' */ 
    break; 
default: 
    /* It's any other value... */ 
} 

通常、スイッチ/ケースを使用している場合、オプションが「フォールスルー」するため、各オプションの後にブレークを使用するように指示されます。しかし、複数のオプションがある場合は、これをあなたの利点に使うこともできます。