注册 登录
编程论坛 C++教室

这个while循环语句为什么会成为死循环?

花脸 发布于 2017-10-27 22:39, 2638 次点击
#include <iostream>
using namespace std;
int main()
{
    char x;
    do
    {
    cout<<"现在正在下雨么?"<<endl;
    cin>>x;
    }
    while (x!='Y'&&x!='y'||x!='N'||x!='n');
    if(x=='Y'||x=='y')
    cout<<"现在正在下雨。"<<endl;
    else
    cout<<"现在没有下雨。"<<endl;
    return 0;
}


[此贴子已经被作者于2017-10-27 22:57编辑过]

6 回复
#2
花脸2017-10-27 22:40
初学者。。请多多指教、
#3
huixph2017-10-28 10:14
while (x!='Y'&&x!='y'||x!='N'||x!='n');
用了逻辑或,当x=Y或y时x!='N'||x!='n'为真,当x=N或n时x!='Y'&&x!='y'为真,当x为其他时x!='Y'&&x!='y'||x!='N'||x!='n'都为真
所以一直循环。

同初学者,如有不对,请多指教
#4
花脸2017-10-28 22:05
回复 3楼 huixph
如果只有Y和N我会改,但是有y,Y,N,n该怎么改?
#5
zbjzbj2017-10-28 22:58
while (x!='Y' && x!='y' && x!='N' && x!='n');
#6
蓝天绿水2017-10-29 17:53
楼上正解,当x都是Y,y,N,n,继续循环
#7
花脸2017-10-29 23:25
好的 谢谢你们。
1