while ループが必要な場合: while a variable is NOT equal 複数の異なる値, これは有効ですか?:
while (uInput != ('a' || 'b' || 'c')){
//do something to make it equal one of those
}
それとも、uInput と a、uInput と b などを個別に比較する必要がありますか?
while ループが必要な場合: while a variable is NOT equal 複数の異なる値, これは有効ですか?:
while (uInput != ('a' || 'b' || 'c')){
//do something to make it equal one of those
}
それとも、uInput と a、uInput と b などを個別に比較する必要がありますか?
それはあなたがしたいことをしません。各値を個別に比較する必要があります。
uInput != 'a' && uInput != 'b' && uInput != 'c'
そのまま、('a' || 'b' || 'c')
に評価されtrue
、式は次と同等になります。
uInput != true
いいえ。書きたいことは次のとおりです。
while ((uInput != 'a') && (uInput != 'b') && (uInput != 'c'))
{
//do something to make it equal one of those
}
式は、文字、、およびtoo('a' || 'b' || 'c')
を変換することによって評価されます。実際には、最初のオペランド( ) のみがここで評価されます。これは、その評価によって値が得られ、式全体も同様に評価されることが保証されるためです。ショートサーキットが適用されます。'a'
'b'
'c'
bool
'a'
true
('a' || 'b' || 'c')
true
したがって、最初のループは次のようになります。
while (uInput != true)
{
//do something to make it equal one of those
}
これはあなたが望むものではありません。
正解は
while (uInput != 'a' && uInput != 'b' && uInput != 'c')
コンディションだから
uInput != 'a' || uInput != 'b' || uInput != 'c'
uInput が値の 1 つと等しい場合でも、常に true と評価され、ループが無限ループになります。
C++ 構文について読む必要があります。