-1
我不知道這段代碼發生了什麼事。在循環中使用scanf的程序打印不正確的輸出
#include<stdio.h>
int main()
{
int ii[5], i;
for (i=1; i<=5; i++)
{
scanf("%d", &ii[i]);
}
printf("----------------------\n");
for(i=1; i<=5; i++)
printf("%d\n", ii[i]);
return 0;
}
編譯後,當我提供輸入作爲
1 2 3 4 5
然後打印,因爲它是, 但是當我提供相反的順序輸入:
5 4 3 2 1
它不斷地問起來到更多的數字,然後打印出一組隨機數字。
我該如何解決這個問題?
'ii [i]'對於'i = 5'是UB。 –
'for(i = 1; i <= 5; i ++)' - 必須是0..4而不是1..5 – Matt
這些隨機數字實際上是未定義的行爲,而你很幸運,你只能得到它們。 請注意,數組是從零開始的,索引從0運行到N-1,而不是從1運行到N. – Maroun