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