2011-10-02 177 views
4

因此,我正在制作一个程序,询问用户是否想要做某件事。答案与Y/N一样简单。我希望该计划能够接受大写和小写字母“Y”。问题是,当我输入while (answer == 'Y', answer == 'y')时,只接受小写字母“Y”。如果我输入while (answer == 'y', answer == 'Y')在do ... while循环中使用多个条件

我在做什么错?

(更多信息:“答案”是我的“字符”变量的名称,而我使用“的iostream”,“cstdlib”和“串”库)

+0

只是好奇,为什么你甚至会认为逗号可能以这种方式工作?是否还有另一种语言? –

+0

我很确定我在Java中看到了类似的东西。这是前一阵子,我没有最好的记忆,所以这是任何人的猜测。 – h3half

+1

@DonReba也许是因为你可以在c中做'for(i = 0,j = 0; i + j <8; i ++,j ++)'' – kratenko

回答

5

您需要使用'逻辑或' 运算符||

所以,你的代码将成为while (answer =='Y' || answer == 'y')

+1

谢谢先生。我真的不知道那里是否存在一个合乎逻辑的'或'运算符。毋庸置疑,事情现在起作用。尽我所能给你答案。 – h3half

2

的问题是,你正在使用的comma operator而不是 “或” 运算符,如逻辑,或者||

维基百科:

在C和C++编程语言中,逗号操作者 (令牌表示,)是评价其 第一个操作数,并丢弃结果的二进制运算符,然后评估第二个 操作数并返回此值(和类型)。逗号运算符具有任何C运算符的最低优先级 ,并充当序列点。 (强调)

2

它的逗号操作符的财产只返回第二个操作数(它执行两个操作数虽然)。考虑下面的代码:

int main() { 
    int i=1, j=2, k=3; 
    int l= (i,cout<<"print; ",j,k); 
    cout << l; 
} 

由于逗号运算符,输出是'print; 3' 。 因此,请尽量避免在您的代码中使用逗号运算符,并且如上所述,请使用逻辑运算符(||)。