もっと短い書き方はないかと思った
if (test != 'e' || test != 'd')
みたいに書きたい
if (test != ('e' || 'd'))
または、このようなものなので、「テスト!=」を繰り返す必要はありません
ありがとう
それが言語の構文です。それについてできることはあまりありません...見た目が気に入らない場合は、テストを含むブール関数を作成し、その関数を呼び出すだけです。
bool isEOrD(char test)
{
return (test != 'e' || test != 'd')
}
...
if (isEOrD(test))
編集:このコードを記述する方法は他にもありますが (この回答へのコメントを参照)、元の方法がおそらく最もクリーンな方法です。
古いC関数を使用できますstrchr
:
if (!strchr("de", test))
{
// test is not 'd' or 'e'
}
でも、見栄えが良いかどうかはわかりません…個人的には、おそらく2つだけ!=
です。
C または C++ は、言語の構文で記述した式を評価する必要があります。式 ('e' または 'd') は常に true を返します。これは、決して同じになることのない値のビットを比較することによって 'or-ing' が行われるためです。C / C ++では生の文字は単に整数の解釈であるため、コンパイラはあなたが何を望んでいるのかをどのように知ることができますか. そのため、合法的に次のように書くことができます。
char aChar = 'a';
// or
char aChar = 0x41; // hex 41 = ascii 'a'
両方を機能させます。