如何在c程序或c++中存储等于10^18的整数值

How to store a integer value equal to 10^18 in c programs or c++?

本文关键字:整数 存储 程序 c++      更新时间:2023-10-16

如何在C变量中存储大整数值?如果我用int a;声明a,它将不起作用。我用这个与long long int。它不工作。

if( a>=0 && a <= (1000000000000000000))

如何声明变量a以使其不会产生任何错误。应该是整数

Compiler error
integer constant is too large for long type.

试试unsigned long long,假设值为正,它最多可以容纳

18,446,744,073,709,551,615

(VS 13)但是,必须使用ULL语法。

让我们看看你写的if语句:

if( a>=0 && a <= (1000000000000000000))

1000000000000000000对于整型文字来说太大了,所以你需要一个更大的文字类型。您应该将a声明为int64_t,并像这样进行比较:

if( a>=INT64_C(0) && a <= INT64_C(1000000000000000000))

请注意,这只会在C99C++11编译器中工作,当您使用#include <cstdint>#include <stdint.h>

编辑:在当前的标准草案中,你可以找到这句话(2.14.2/2):

整数字面值的类型是对应列表的第一个类型

这意味着编译器应该自动使用所需的文字类型来匹配你的文字。顺便说一句,我没见过那种编译器

您可以使用long long来存储该整数。long long保证至少保存64位。

这个代码的问题:if( a>=0 && a <= (1000000000000000000))是,如果您希望它的类型为long longULLunsigned long long,您需要给字面值(1000000000000000000)后缀LL