ロングのprintf

私はmyPrintf関数を実装しました:

int myPrintf(const char* format,...)
{
    va_list args;
    va_start(args, format);
    int ret = vprintf (format, args);
    fflush(stdout);
    va_end (args);
    return ret;
}

format = “%ld、%ld”で関数を実行すると、 charsのセットとしての args 表現は
78,97,188,0,0,0,0,0,120,10,227,5,0,0,0,0 です。
stdoutに出力される出力は 12345678,0 です。代わりに
12345678,98765432 です。
何が問題になるのでしょうか?それはどのように解決できますか?

ベストアンサー

Because, like on ideone, your longs are 32 bits
http://ideone.com/jjafU

If you use "%lld" for 64-bit values, it works as
you expect
http://ideone.com/BYTaa

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です