if ((code == S || M || L || N || P || K ||R || C || U || W || O))
{
return T;
}
正しくor演算子を使用していますか?私はそれらの文字のいずれかであるために意図されたが、私は正しくありません、あなたが書くべきオペレータ論理演算子||
if ((code == S || M || L || N || P || K ||R || C || U || W || O))
{
return T;
}
正しくor演算子を使用していますか?私はそれらの文字のいずれかであるために意図されたが、私は正しくありません、あなたが書くべきオペレータ論理演算子||
いいえ、それは有効ではありません。まず、それぞれが一重引用符で囲まれなければならず、第二に、各文字と明示的に比較する必要があります。つまり、if(code == 'S' || code == 'M' ...)
です。
このような多くの条件を確認する場合は、配列を取得してループを使用します。
を使用していた場合、私はわからない -
if ((code == 'S') ||(code == 'M') ||(code == 'L') /*....*/)
あなたが書く必要があるでしょう:
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>
がソースファイルの先頭にある必要があります。
いいえ。 ||
は、論理的または操作であり、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';
}
号まず第一に、私は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... */
}
通常、スイッチ/ケースを使用している場合、オプションが「フォールスルー」するため、各オプションの後にブレークを使用するように指示されます。しかし、複数のオプションがある場合は、これをあなたの利点に使うこともできます。
大丈夫ですよね –