私は何かを逃したに違いない。私はc++を学習するための演習を行っていますが、ユーザーがc、p、t、またはgのいずれかの文字を入力した場合は続行するように求められ、それ以外の場合はプロンプトを再要求するため、次のように記述しました。
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main(void){
cout << "Please enter one of the following choices:" << endl;
cout << "c) carnivore\t\t\tp) pianist\n";
cout << "t) tree\t\t\t\tg) game\n";
char ch;
do{
cout << "Please enter a c, p, t, or g: ";
cin >> ch;
cout << "\"" << ch << "\"" << endl;
}while(ch != 'c' || ch != 'p' || ch != 't' || ch != 'g');
cout << "End" << endl;
cin.clear();
cin.ignore();
cin.get();
return 0;
}
これは機能せず、正しい文字のいずれかを押した場合でも、プロンプトで再要求するだけです。
ただし、この行を変更すると、次のようになります。
while(ch != 'c' || ch != 'p' || ch != 't' || ch != 'g');
に
while(ch != 'c' && ch != 'p' && ch != 't' && ch != 'g');
何故ですか?私の理解では、テストの1つが正しいので、「OR」ステートメントが機能するはずです。