为什么我不能使用long long int类型?C++

Fre*_*Roy 3 c++ integer

我试试

long long int l = 42343254325322343224;
Run Code Online (Sandbox Code Playgroud)

但无济于事.为什么它告诉我,"整数常数太长了." 我正在使用long long int类型,它应该能够容纳超过19位数.我在这里做错了还是有一个我不知道的特别秘密呢?

Mar*_* A. 5

因为它更多,在我的x86_64系统上 2^64

//                                         42343254325322343224
// maximum for 8 byte long long int (2^64) 18446744073709551616
//                    (2^64-1 maximum unsigned representable)
std::cout << sizeof(long long int); // 8
Run Code Online (Sandbox Code Playgroud)

您不应该将位数与表示数字所需的位数混淆

  • 嗯,无论你使用什么系统,它都超过2 ^ 64.有意义的是,"long long"是64位宽 - 它可以保持的最大值是2 ^ 63-1,而不是2 ^ 64.原则上,在某些系统上,"long long"可能比64位更宽,但在我听说过支持它的每个系统上恰好是64位. (3认同)