を返したいのですuint64_t
が、結果が切り捨てられているようです:
でlib.c
:
uint64_t function()
{
uint64_t timestamp = 1422028920000;
return timestamp;
}
でmain.c
:
uint64_t result = function();
printf("%llu = %llu\n", result, function());
結果:
394745024 = 394745024
コンパイル時に、次の警告が表示されます。
warning: format '%llu' expects argument of type 'long long unsigned int', but argument 2 has type 'uint64_t' [-Wformat]
warning: format '%llu' expects argument of type 'long long unsigned int', but argument 3 has type 'int' [-Wformat]
関数の戻り値の型が であるとコンパイラが考えるのはなぜint
ですか? 出力された結果が関数によって送信された値と異なることをどのように説明できますfunction()
か?