做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
的范围是 -2147483648
到 2147483647
,并且有 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
数组来存储您的号码,因为这是处理大数字的最佳方式。
所以,我希望这个程序在位数不是 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
的范围是 -2147483648
到 2147483647
,并且有 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
数组来存储您的号码,因为这是处理大数字的最佳方式。