gpt4 book ai didi

c - 模运算的结果为负

转载 作者:太空狗 更新时间:2023-10-29 16:01:32 26 4
gpt4 key购买 nike

为什么以下 C 代码会产生负数作为输出?我该如何防止这种情况发生?

    #include <stdio.h>

int main()
{
int i;
char buf[1024];
for (i = 0; i < 1024; i++)
buf[i] = i%256;

for (i=0; i<1024; i++) {
printf("%d ", buf[i]);
if (i%32==31)
printf("\n");
}
}

最佳答案

让我们看一下这行代码:

buf[i] = i%256;

此处,i % 256 被计算为 int 类型的值。但是,buf 是一个 char 数组,因此当将值分配到数组中时,它会被截断为 char。如果模数的结果超出可以存储在 char 中的正值范围,它最终可能会回绕并存储为负数。

换句话说,并不是模数产生了一个负值,而是你将结果存储在一个不能容纳它的类型中。尝试将数组更改为 int 数组或 unsigned char 数组,看看是否能解决问题。

希望这对您有所帮助!

关于c - 模运算的结果为负,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27537168/

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