Do while循环继续循环c++



所以,我希望这个程序在位数不是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

然而,我建议你使用chars数组来存储你的数字,因为这是处理大数的最佳方式。

在c++中,int的范围是-21474836482147483647,有11位数字超出了这个范围。在声明变量时使用long而不是int

最新更新