我肯定错过了什么。我正在做一个学习 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');
这是为什么?我的理解是“OR”语句应该起作用,因为其中一项测试是正确的。