[英]Can you explain why this code has this output?
#include <stdio.h>
int main(){
int a[7];
for (int i=0; i<7; i++) {
a[i]=i;
a[6-i]=i;
}
for (int i=0; i<7; i++) {
printf("%d ", a[i]);
}
}
你能解釋一下為什么這個代碼 output 這個:
6 5 4 3 4 5 6
謝謝。
這個
a[6-i]=i;
會像這樣分配數組
a[6]=0
a[5]=1
a[4]=2
a[3]=3
等等。 然而
a[i]=i;
會像這樣分配它
a[0]=0
a[1]=1
And this goes on.
由於a[6]
已分配為 0,因此在第 7 次循環a[6]=6
時將其替換,依此類推。 我不知道你期望什么。
當你不明白為什么你的程序會以某種方式運行時,最好的方法是調試它。 為此,您應該使用像 gdb 這樣的調試器,這是一個很棒的工具,您真的應該學習使用它,尤其是因為您是初學者。 這是初學者的教程。 你也應該閱讀這個
現在回答您的問題,由於您的代碼很小,我們可以通過展開它來手動調試它,其中 U 表示未定義的值:
i == 0
時,您有a = {0, U, U, U, U, U, 0}
i == 1
時,您有a = {0, 1, U, U, U, 1, 0}
i == 2
時,您有a = {0, 1, 2, U, 2, 1, 0}
i == 3
時,您有a = {0, 1, 2, 3, 2, 1, 0}
現在這就是你的程序應該停止的地方,因為它開始覆蓋舊值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.