gpt4 book ai didi

c - 为什么这个程序的输出会在 130 处发生变化?

转载 作者:太空狗 更新时间:2023-10-29 17:14:45 25 4
gpt4 key购买 nike

我有以下代码,在我看来它应该始终输入 if 语句的真实部分,但是,超过 120,它似乎开始执行 else 条款。为什么会这样?

char x;
for (i=0;i<256;i+=10) {
x=i;
if (x==i)
printf("%d true\n",i);
else
printf("%d false\n",i);
}

输出是:

0 true
10 true
: all numbers from 20 to 100 are true
110 true
120 true
130 false
140 false
: all numbers from 150 to 230 are false
240 false
250 false

最佳答案

这是因为您使用的是 signed char 并且可能是整数。

当 char 达到 130(变成 130 - 256)时溢出,但整数不会溢出。 130 - 256 != 130。

一个简单的更改可以修复它,使结果始终为真 - 只需在第一行添加 unsigned:

unsigned char x;
for (int i=0;i<256;i+=10)
{
x=i;
if (x==i)
printf("%d true\n",i);
else
printf("%d false\n",i);
}

关于c - 为什么这个程序的输出会在 130 处发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2722152/

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