我有一個在Mac上用ANSI C編寫的命令行實用程序,它具有爲單鏈表創建氣泡排序數組的功能。我宣佈了循環變量。C - 循環只執行一次的縮寫
int a = 0;
int b = 0;
我寫冒泡排序在縮略式環路(即,在離開變量初始化爲空)。
for (; a < size; a++)
for(; b < size; b++)
這退出前只執行一次。使用i變量填充數組的前一個for循環以相同的方式寫入並按預期執行。對於冒泡排序循環的修復是將a = 0和b = 0放回去。有沒有原因爲什麼縮寫for循環未能執行?
你真的需要循環體外的a和b嗎?如果不是,他們應該在裏面聲明。在循環之外聲明它們意味着它們在循環外部使用,這意味着它們可能不會像循環執行時期望的那樣爲零。 – 2010-02-15 23:41:16
這是ANSI C.如果變量是在內部聲明的(即在C99模式之外使用'for'循環初始聲明),編譯器會拋出警告。 – 2010-02-15 23:52:49
爲了將來的參考,如果您一次只追蹤代碼的執行情況,這種初學者的錯誤會立即變得清晰。您可以在調試器中或手動執行此操作。它確實會幫助你更快更深地學習。 – dmckee 2010-02-16 00:03:31