Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否有用户可以输入的最大整数长度?_C++_Maxlength - Fatal编程技术网

C++ 是否有用户可以输入的最大整数长度?

C++ 是否有用户可以输入的最大整数长度?,c++,maxlength,C++,Maxlength,我制作了一个小程序来确定用户提供的整数的长度: #include <iostream> using namespace std; int main() { int c=0; //counter for loop int q=1; //quotient of number upon division cout << "Hello Cerberus! Please enter a number." << endl; cin &

我制作了一个小程序来确定用户提供的整数的长度:

#include <iostream>

using namespace std;

int main()
{
    int c=0; //counter for loop
    int q=1; //quotient of number upon division

    cout << "Hello Cerberus! Please enter a number." << endl;
    cin >> q;

    if(q > -10 && q < 10)
    {
        cout << "The number you entered is 1 digit long." << endl;
    }
    else
    {
        while(q != 0)
        {
            q=q/10;
            c++;
        }

        cout << "The number you entered is " << c << " digits long." << endl;
    }
    return 0;
}
#包括
使用名称空间std;
int main()
{
int c=0;//循环的计数器
int q=1;//数除以的商
coutq;
如果(q>-10&&q<10)
{

cout这是计算机体系结构中的一个限制。每个数字类型都有一个固定的上限,因为该类型描述的数据大小是固定的。例如,您的
int
可能占用内存中的四到八个字节(取决于CPU;根据您的观察,我认为是前者),并且只有这么多的位组合可以存储在这么多字节的内存中

您可以使用确定平台上的
int
范围,但我个人建议使用固定宽度类型别名(例如
int32\u t
int64\u t
),并选择适合您的应用程序的足够范围

或者,确实存在所谓的“bigint”库,这些库本质上是包装整数数组的类,并添加了巧妙的功能,使任意大的值像算术类型一样工作。不过,这对您来说可能有些过头了

不要试图开始使用浮点类型(
float
double
)来增强其神奇的范围增强功能;就像整数类型一样,它们的精度从根本上是有限的,但使用浮点类型会增加额外的问题和顾虑


不过,用户输入没有基本限制。这是因为您的流正在转换文本字符,并且您的流中可以包含尽可能多的文本字符。在这个级别上,您实际上只受可用内存的限制。

这是计算机体系结构中的一个限制。每种数字类型都有一个固定上限,因为类型描述的数据大小是固定的。例如,您的
int
很可能占用内存中的四个或八个字节(取决于CPU;根据您的观察,我认为是前者),并且只有这么多的位组合可以存储在这么多字节的内存中

您可以使用确定平台上的
int
范围,但我个人建议使用固定宽度类型别名(例如
int32\u t
int64\u t
),并选择适合您的应用程序的足够范围

或者,确实存在所谓的“bigint”库,这些库本质上是包装整数数组的类,并添加了巧妙的功能,使任意大的值像算术类型一样工作。不过,这对您来说可能有些过头了

不要试图开始使用浮点类型(
float
double
)来增强其神奇的范围增强功能;就像整数类型一样,它们的精度从根本上是有限的,但使用浮点类型会增加额外的问题和顾虑


不过,对用户输入没有基本的限制。这是因为您的流正在转换文本字符,并且您的流中可以包含尽可能多的文本字符。在这个级别上,您实际上只受可用内存的限制。

如果我想将int64_t用于“q,”我会说:#include#include使用名称空间std;int main(){int c=0;//循环计数器int64_t q=1;//除法后的数字商……就这么简单吗?@Cerberus:看起来不错。如果我想用int64_t表示“q”,我会说:#include#include使用名称空间std;int main()吗{int c=0;//循环的计数器int64_t q=1;//除法后的数字商……就这么简单?@Cerberus:看起来不错。