比较基础的一个问题,但是不知道为什么?下面代码:#includeiostream.h voidmain(){intawhile(1){cin a
比较基础的一个问题,但是不知道为什么?
下面代码:
#include "iostream.h "
void main()
{
int a;
while(1){
cin> > a;
if (a <0)
{
continue;
}
cout < <a < <endl;
}
}
如果我在cin的时候输入的不是整数,而是一个字符,那么程序就会一直输出0
不知道为什么,怎么让在输入的不是整数的时候不输出a??
[解决办法]
看不惯LS的,说话每个人有不同方式,照你那么说,你应该去找本语法书了。
连分号都能少掉。。。
[解决办法]
构造函数可以定义为保护类型啊,这样它不允许用户产生对象,只允许它的派生类产生对象,来调用父类的非私有函数。
[解决办法]
可以定为protected的,出现语法错误是因为你在栈上面创建了个对象,而为了在栈上面创建对象,编译器自动调用构造函数,这就出现了和访问控制相冲突的局面,于是编译器报错。
至于为什么是0,这个你去问编译器的作者,这个是和特定实现相关的,没什么标准。
最有可能的就是operator> > (istream&,char const*)函数里面调用了atoi,而这个实现里面atoi在无法识别时,返回0
