int main()
{
int a = 0;
int sum = 0;
while(std::cin>>a)
sum += a;
std::cout << "sum=" <<sum<< std::endl;
return 0;
}
此时输入一个非整形数如9.9,则应当跳出循环才对,然而Sum仍然会加上9。
有些无法理解,请求各位指点
这是因为就算你输入的是浮点型数据,cin读入a的值,在while循环中不可能出现小数循环,会自动取整,你把a,sum定义为double类也是一样
while判断的是输入是不是0,而不是判断输入是否整形。
想判断是不是整形可以通过读入数存入符点型a,再用a-(int)a判断是否大于0就知道输入的是不是符点型
因为你的sum类型是int,所以计算你输入的a是小数,但是在和sum进行运算的时候,会进行隐私类型转换,即转为int,最后的结果就没有小数了