我创建了一个包含随机数的数组,但是当我打印数组时它们都是0,这里有什么问题?我知道有随机数,但仍然是零?
int superArray[SIZE];
int index, counter;
srand( time(0) );
for (index = 0; index < SIZE; index++) //random numbers
superArray[index] = rand() % 21 +1;
for (index = 0; index < SIZE; index++) //vertical print
{
printf("%8.f\n", superArray[index]);
}
printf("%8d\n\n", superArray[8]); //verify that array has random numbers
答案 0 :(得分:5)
使用int
打印%d
,它将起作用:
printf("%d\n", superArray[index]);
答案 1 :(得分:3)
TL; DR; - 使用错误的格式说明符是未定义的行为。
引用C11
标准,第7.21.6.1
章,fprintf()
如果转换规范无效,则行为未定义。如果有任何论据 不是相应转换规范的正确类型,行为是 未定义。
superArray
是一个int
的数组。您应该使用%d
格式说明符来打印值。
那就是说,
printf("%8d\n\n", superArray[8]);
不会一个接一个地打印所有 8个元素,因为可能已经想到了。
即使您没有像上面那样思考,superarray[8]
可能无效,如果SIZE
值小于9
,因为C
数组索引从0开始。