gpt4 book ai didi

c - 为什么将 uint8_t 与整数相乘会得到 0?

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:04 26 4
gpt4 key购买 nike

我尝试编写一个程序,但我遇到了一小段问题。

for(uint8_t i = 1; i < MAX_BIT_VALUE; i*=2){
printf("Current value of i: %u\n", i);
}

当我运行这个片段时,我得到这个输出:

Current value of i: 0

Current value of i: 0

Current value of i: 0

Current value of i: 0

无限循环。我不明白为什么。 uint8_t 是一个 8 位无符号整数。我只是将值为 1 的 i 乘以 2。它怎么可能变成 0?

但是,如果我将 i 的数据类型更改为 int,它就可以正常工作:

Current value of i: 1

Current value of i: 2

Current value of i: 4

Current value of i: 8

Current value of i: 16

...

我试图在网上找到可能的答案,但我不知道如何用问题的措辞来获得答案。你们能帮帮我吗?

最佳答案

除了打印时其他答案推荐的问题外,您还有以下问题:

  • 将 i==128 乘以 2
  • 结果 256
  • 将 256 (0x100) 存储在无符号的 8 位中,结果为 0,
    因为 8 位要变窄
  • 0乘以2
  • 结果 0
  • 0 < 255 -> 无限循环

关于c - 为什么将 uint8_t 与整数相乘会得到 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45962994/

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