我有一个函数来生成0到255之间的数字,但它也产生负值。请给我任何建议。
char* generateRandomNumbers()
{
static unsigned char random[9];
srand(0);
static int i = 0;
for(;i<9;i++)
{
random[i] = rand() % (256);
}
return (char*)random;
}
打印数字:
char* random = generateRandomNumbers();
for (int i = 0; i < 9; i++) {
printf("%d\n", random[i]);}
答案 0 :(得分:2)
rand()也会产生负值
不,不是。 描述您实际观察的行为。你没有观察兰特返回负数。您正在观察当字符打印为数字时,您会得到一个负数。
所以你应该问的问题是:
为什么我的字符打印为负数?
因为在您的C版本中对char
进行符号扩展。