如何在c程序或c ++中存储等于10 ^ 18的整数值?
如何在C变量中存储一个大整数值? 如果我宣布与int a;
它不会起作用。 我使用了long long int
它不起作用。
if( a>=0 && a <= (1000000000000000000))
什么声明变量a,以便它不会出现任何错误。它应该是整数。
Compiler error integer constant is too large for long type.
让我们看看你写的if
语句:
if( a>=0 && a <= (1000000000000000000))
1000000000000000000
对于整数文字而言太大,因此您需要更大的文字类型。 您应该将a
声明为int64_t
并执行以下比较:
if( a>=INT64_C(0) && a <= INT64_C(1000000000000000000))
请注意,当#include
或#include
时,这只适用于C99
或C++11
编译器。
编辑:在标准的当前草案中你可以找到这句话(2.14.2 / 2):
整数文字的类型是表6中相应列表中的第一个,其中可以表示其值。
这意味着编译器应该自动使用所需的文字类型来使您的文字适合。 顺便说一下,我没有看到那种编译器。
尝试一个unsigned long long
,假设值为正,它可以保持
18,446,744,073,709,551,615
(VS 13)但是,您必须使用ULL
语法。
您可以使用long long
来存储此整数。 long long
保证至少保留64位。
此代码的问题: if( a>=0 && a <= (1000000000000000000))
,您需要为文字( 1000000000000000000
)提供后缀LL
如果您希望它为long long
类型或ULL
为unsigned long long
。