#include <stdio.h>
int main()
{
long double n = (long double)1208925819614629174706175; // (1<<80)-1 (generated in python)
printf("%LG\n",n);
}
在用 gcc 编译时,我收到一个警告
test.c:5:31: warning: integer constant is too large for its type [enabled by default]
运行时打印-1
在做 asizeof(long double)
时,它会打印12
. 所以一个签名long double
应该容纳(1<<83)-1对吗?
如何让它正常工作?
PS:我正在处理的原始问题是处理存储大至12*(10 18 ) 的有符号整数。我不想编写乘法、加法和其他计算例程。那么我该怎么做呢?