-1

C99(stdint.h)で定義されているuint64_tは8バイト(= 64ビット)の長さであると定義されているため、最大値は2 ^ 64-1になります。ただし、次のコードスニペットを試してみると、 uint64_tは、2 ^ 64-1に近くないにもかかわらず、オーバーフローします。

uint64_t Power10(int exponent)
{
    int i = 1;
    uint64_t ret = 10;
    while(i < exponent)
    {
        ret *= 10;
        ++i;
    }

    return ret;
}

助けていただければ幸いです。

4

1 に答える 1

4

"%" PRIu64変換して印刷する必要があります。正しいインクルードを追加することを忘れないでください!

#include <inttypes.h>
int main(void) {
    printf("Power10(12) is %" PRIu64 "\n", Power10(12));
    return 0;
}
于 2011-07-05T23:13:13.110 に答える