我已经尝试编写一个循环来避免用户通过使用||
运算符将错误类型的数据(实际上是布尔值)输入到程序中。逻辑或优先级
int Entrer()
{
int A;
do
{
cout<<"Entrez 0 ou 1."<<endl;
cin >> A;
}
while (A != (1 || 0));
return A;
}
有人可以告诉我,为什么程序只接受1
并没有0
?
我已经尝试编写一个循环来避免用户通过使用||
运算符将错误类型的数据(实际上是布尔值)输入到程序中。逻辑或优先级
int Entrer()
{
int A;
do
{
cout<<"Entrez 0 ou 1."<<endl;
cin >> A;
}
while (A != (1 || 0));
return A;
}
有人可以告诉我,为什么程序只接受1
并没有0
?
do { ... } while (A != (1 || 0));
应该while (A != 1 && A != 0);
否则,A != (1 || 0)
代表A != 1
因为(1 || 0)
是!=
之前评估。
如果要接受1
和0
,则需要编写条件为while(A != 1 && A != 0);
。由于您的条件撰写,它将首先评估(1 || 0)
,并且,因为1
是true
而0
是false
,将评估为A != 1
。
感谢您的教学人员,我真的很感激。 – Yvain 2015-03-02 17:26:58
你可能会做得更好,当一个!= 0 && a!= 1 – 2015-03-02 15:04:10