下面的代碼是我寫的,用於測試我對使用for-loop
的for-loop
的理解,特別是使用for-loop
中的賦值語句。但是在這裏我得到了意想不到的輸出爲什麼它不將0
分配給array
的前10個元素?
如果我聲明陣列爲array[10]
而不是array[11]
,爲什麼不打印array
?
有人可以解釋嗎?for循環內部的賦值語句
#include <stdio.h>
int main() {
int i, array[11]; //array[10]
for (i = 0; ((i < 10) || (array[i] = 0)); ++i);
for (i = 0; ((i < 10) && (printf("%d\n", array[i]))); ++i);
return 0;
}
但是,爲什麼第二個'for-loop'甚至沒有'printf'垃圾值? – noufal
它應該打印垃圾,至少當數組大小爲11(在VS2010中檢查)時。如果數組大小爲10,那麼程序可能會在打印前分配時崩潰,尤其是在某些調試配置(使用數組綁定檢查)編譯時。 –
感謝您的完整答案。 – noufal