如何在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 时,这只适用于C99C++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类型或ULLunsigned long long