之前在Java里也遇到過,潛意識里一直認為 for 循環的后面只要代碼縮進格式正確,那么 for 語句后面相應代碼都是在 for 循環的作用域中的,其實不然。
比如今天在寫哈希表的時候,下面的代碼:
1 for (i = 0; i < H->TableSize; i++) 2 H->Cells[i].Info = Empty; 3 H->Cells[i].Data = 0; 4
代碼的作用是初始化哈希表的數據,結果編譯運行的時候給我報了錯,經過調試發現少加了括號。特此,記錄防止遺忘。
1 for (i = 0; i < H->TableSize; i++) { 2 H->Cells[i].Info = Empty; 3 H->Cells[i].Data = 0; 4 }
這樣就對了。
C語言 for 循環有無大括號的區別:
有大括號:每次循環都執行大括號里面的代碼;
無大括號:只執行 for 循環后面的一行代碼。
另:Java里的 for 循環語句語法和 C 相同。