所以,我希望这个程序在位数不是16时继续提示,这部分工作,但是每当我尝试输入16位数时,它就循环而不让我再次输入任何内容。这是我写的:
do{
cout<<"insert number pls: ";
cin>>number;
//counting digits
number_count = 0;
while(number != 0){
number = number/10;
number_count++;
}
}while(number_count != 16);
cout<<"done"<<endl;
我试着用(number_count != 1)
做,直到(number_count != 10)
,他们工作了,它只是从11开始不工作,为什么?
用于存储号码的int
的值限制为2147483647
,对应10位数字。这就是为什么它在11位数时停止工作的原因。一个简单的解决方法是使用long long int
代替。在这种情况下,最大值是2^63,等于9223372036854775807
(19位)。
您可以使用以下命令以编程方式检查特定系统的最大值:
#include <iostream>
#include <limits>
int main() {
std::cout << std::numeric_limits<long long int>::max();
}
输出:
9223372036854775807
然而,我建议你使用char
s数组来存储你的数字,因为这是处理大数的最佳方式。
在c++中,int
的范围是-2147483648
到2147483647
,有11位数字超出了这个范围。在声明变量时使用long
而不是int
。