我试图用C代表一个很长的数字(即13到16位数字)。 long long
似乎不起作用,因为我总是遇到溢出问题。
如果有人可以帮我解决这个问题,我将不胜感激,谢谢。
long long number = 123654123654123LL;
printf("%ull", number);
答案 0 :(得分:6)
格式说明符不正确,应为%llu
,number
的类型应为unsigned long long
:
#include<stdio.h>
int main()
{
unsigned long long number = 123654123654123LL;
printf("%llu\n", number);
return 0;
}
输出:
123654123654123
格式说明符%ull
实际上是%u
,后跟两个l
(ell)字符。
从 5.2.4.2.1 C99标准的整数类型大小&lt; limits.h&gt; 部分开始,long long
和unsigned long long
的最大值保证为至少是:
LLONG_MAX +9223372036854775807 // 263 − 1
ULLONG_MAX 18446744073709551615 // 264 − 1
所以123654123654123
在范围内很舒服。