gpt4 book ai didi

c - 为什么这会导致溢出?

转载 作者:行者123 更新时间:2023-11-30 18:32:53 26 4
gpt4 key购买 nike

据我了解,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;
}

非常感谢您的帮助。

最佳答案

您需要使用 "%"PRIu64 转换进行打印。不要忘记添加正确的包含!

#include <inttypes.h>
int main(void) {
printf("Power10(12) is %" PRIu64 "\n", Power10(12));
return 0;
}

关于c - 为什么这会导致溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6589804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com