为什么循环输入会有有关问题呢

为什么循环输入会有问题呢?
cin> > y;
while(!y)   {
    if   (y   ==   0)   exit(1);
    cin> > y;
}
为什么我的第二个输入语句会有问题呢?

------解决方案--------------------
cin> > y;
while(!y) { //y是零时, 进入下面循环体
if (y == 0) exit(1); //y是零时推出程序
cin> > y; //所以这一句永远没有机会执行!
}

------解决方案--------------------
while(y) y为true或者非0值时,执行循环体 这样楼主应该能够理解了
------解决方案--------------------
cin> > y;
while(!y) {
if (y == 0) exit(1);
cin> > y;
}
==》
while(cin> > y) { //如此即可
if (y == 0) exit(1);
}
------解决方案--------------------
原来的形式下,
不会有什么问题。

如果确实有问题,
那么可能是 滞留的回车符号导致,检查你的 y 是否为 char类型,是的话需要清除缓冲:
cin.sync();

另外原来的方式下存在点逻辑问题:
while(!y) {
if (y == 0) exit(1); //这个永远都是执行的,因为必须输入 y 为0时候循环体才会执行
...
------解决方案--------------------
#include <math.h>
#include <iostream>
using namespace std;
main(){
int y ;
cin > > y;
while(y) {
if (y == 0) exit(1);
cin> > y;
}

}
去掉!号,要不只能输入0,才循环执行。