#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
を実行するsizeof(long double)
と、が出力され12
ます。したがって、署名者は(1 << 83)-1long double
を収容する必要がありますか?
どうすれば正しく動作させることができますか?
PS:私が取り組んでいた元の問題は、12 *(10 18)までの符号付き整数の格納を扱っていました。掛け算、足し算、その他の計算ルーチンは書きたくありません。では、どうすればよいですか?