使用c语言表示长号

Sin*_*nan 0 c

我试图用C表示一个很长的数字(即13到16位数字).long long似乎不起作用,因为我总是遇到溢出问题.

如果有人可以帮我解决这个问题,我将不胜感激,谢谢.

long long number = 123654123654123LL;
printf("%ull", number);
Run Code Online (Sandbox Code Playgroud)

hmj*_*mjd 6

格式说明符应该是不正确的,%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

请参见http://ideone.com/i7pLX.

格式说明符%ull实际上%u后跟两个l(ell)字符.

5.2.4.2.1 C99标准的整数类型<limits.h>大小来看,最大值long longunsigned long long保证至少为:

LLONG_MAX +9223372036854775807 // 263 ? 1
ULLONG_MAX 18446744073709551615 // 264 ? 1
Run Code Online (Sandbox Code Playgroud)

所以123654123654123舒适地在范围内.