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