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;
}
助けていただければ幸いです。