【发布时间】:2015-02-16 16:26:05
【问题描述】:
为什么下面的 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");
}
}
【问题讨论】:
-
代码需要使用无符号字符。因为 0x7F 以上的所有值都设置了符号位。
标签: c math modulo negative-number