为什么函数产生负数?

时间:2016-06-30 02:52:12

标签: c arrays random

我有一个函数来生成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]);}

1 个答案:

答案 0 :(得分:2)

  

rand()也会产生负值

不,不是。 描述您实际观察的行为。你没有观察兰特返回负数。您正在观察当字符打印为数字时,您会得到一个负数。

所以你应该问的问题是:

  

为什么我的字符打印为负数?

因为在您的C版本中对char进行符号扩展。

相关问题