我有最奇怪的问题!我需要制作一个程序,用户必须输入一个10位数字。所以,我检查输入用do-while循环:Do-while循环不会结束吗?
do
{
cout<<"Enter a 10-digit number: "<<endl;
cin>>number;
}
while (numberOfDigits(number) != 10);
这里是numberOfDigits功能:
int numberOfDigits(int num)
{
int d = 0;
while (num > 0)
{
num /= 10;
d++;
}
return d;
}
所以,当我输入一个数小于10,它循环并转到启动(告诉我再次输入一个10位数字)。但是,当我输入的数字超过10位时,将出现无限循环,并且控制台不会停止打印“输入10位数字:”...任何想法?
尝试将int更改为long long – marsh 2014-11-20 21:06:46
int通常为32位宽;一个32位(带符号)的整数值只能达到2 ** 31,或者刚刚超过20亿,这正好是10位数字。除此之外的任何东西都不适合int,并且'cin'进入一个错误状态,它不能读取任何其他东西(如果你输入的话会发生同样的情况,例如“cat”而不是数字)。验证输入的* safe *方法是将所有内容作为字符串读取,然后检查它,然后在验证通过时将其转换为最终类型('int'等)。 – Cameron 2014-11-20 21:10:20
请发布[MCVE](http://stackoverflow.com/help/mcve)。 – 2014-11-20 21:14:19