我的理解是,由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;
}
非常感谢帮助。
答案 0 :(得分:4)
您需要使用"%" PRIu64
转化进行打印。不要忘记添加正确的包含!
#include <inttypes.h>
int main(void) {
printf("Power10(12) is %" PRIu64 "\n", Power10(12));
return 0;
}