我正在尝试将大整数值分配给 c 中的变量,当我打印时,我只得到 10123456。
问题是什么?
int main(){
long a = 1234567890123456;
printf("\n",sizeof(a));
printf("%ld",a);
}
我正在尝试将大整数值分配给 c 中的变量,当我打印时,我只得到 10123456。
问题是什么?
int main(){
long a = 1234567890123456;
printf("\n",sizeof(a));
printf("%ld",a);
}
最大整数类型是:
unsigned long long
不要忘记 ULL 后缀。
或者,如果您需要更大的整数,请查看一些 bigint 库,例如gmp。
当然,也有long long
,但也适用于负整数,限制更小。
Type min max
(signed) long long -9223372036854775808 9223372036854775807
unsigned long long 0 18446744073709551615
long a = 1234567890123456L;
如果 long 足够长,取决于编译器/操作系统。如果不
long long a = 1234567890123456LL;
如果数字大于 64 位,即超过unsigned long long
可以容纳的长度,则 C 中除 string( char[]
) 之外的任何数据类型都无法容纳该值,将其存储为字符串并尝试编写自己的函数来操作 (例如加、减等)对这些“非常大的数字”。