gpt4 book ai didi

c - For 循环 - 将无符号数与有符号整数进行比较

转载 作者:太空狗 更新时间:2023-10-29 15:27:02 27 4
gpt4 key购买 nike

我试图在 for 循环中比较一个无符号数和一个有符号数,但它没有执行 for 循环之后的语句,这意味着 for我认为循环不起作用。我的代码是:

#include <stdio.h>
int main()
{
unsigned int i;
for (i = 8; i >= -1; i--)
printf ("%d\n", i);
return 0;
}

在上面的代码中,printf 语句没有被执行,所以我的 for 循环出了什么问题。我们不能比较无符号数和有符号数吗?

最佳答案

unsigned int i;
for (i = 8 ; i >= -1; i--)

-1 转换为无符号类型中的最大值进行比较。因此,对于 unsigned 值,

i >= -1

仅对 i = UINT_MAX 为真。

要获得预期的输出,最简单的方法是使用带符号的整数,例如int.

另一种方法是在循环控制中做一些魔术:

for(i = 8+1; i-- > 0;)

但如果你这样做,一定要写一条注释来解释不寻常的循环控制代码。

关于c - For 循环 - 将无符号数与有符号整数进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14036862/

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