做while循环不断循环c ++

Do while loop keeps looping 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 开始不工作,这是为什么?

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

您用来存储号码的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 数组来存储您的号码,因为这是处理大数字的最佳方式。