0

我正在尝试将大整数值分配给 c 中的变量,当我打印时,我只得到 10123456。

问题是什么?

  int main(){
      long a = 1234567890123456;
      printf("\n",sizeof(a));
      printf("%ld",a); 
  }
4

3 回答 3

6

最大整数类型是:

unsigned long long

不要忘记 ULL 后缀。
或者,如果您需要更大的整数,请查看一些 bigint 库,例如gmp

当然,也有long long,但也适用于负整数,限制更小。

 Type                min                      max

 (signed) long long  -9223372036854775808     9223372036854775807
 unsigned long long  0                        18446744073709551615
于 2013-08-20T09:50:26.060 回答
2
long a = 1234567890123456L;

如果 long 足够长,取决于编译器/操作系统。如果不

long long a = 1234567890123456LL;
于 2013-08-20T09:50:19.107 回答
0

如果数字大于 64 位,即超过unsigned long long可以容纳的长度,则 C 中除 string( char[]) 之外的任何数据类型都无法容纳该值,将其存储为字符串并尝试编写自己的函数来操作 (例如加、减等)对这些“非常大的数字”。

于 2013-08-20T10:00:59.750 回答