1樓:匿名使用者
不行,因為 i++是先取i ,再把i增大1 ,按照本來的, delete black[0] black[1]... black[w-1]
按照++i ,每次先將i增大1,再用它。delete black[1], black[2]... black[w]
刪掉了不該刪的 black[w],沒刪掉該刪的 black[0]所以反過來不行的。別聽樓上瞎說,++i,和i++,到底該用哪個,得具體分析,別急著它那點錯誤經驗。
採納我吧,謝謝樓主
2樓:ok洛陽水席
i++是使用i之後再加一.++其實也是乙個函式,它原理是先用i的拷貝儲存i的值,再將i+1;最後將i的拷貝返回。
所以用i++比++i浪費資源!能用++i就用++i;別用i++!
不懂追問!
3樓:我要賺第一桶金
是可以的,執行**的順序是先執行int i=0;
然後進行判斷i 再執行迴圈體delete部分 最後執行++i,依次迴圈 這裡改成i++也沒錯,但是++i在執行效率上要比i++高只有在大的專案上才有明顯的體現。 4樓:空雪夢見 你的「反過來寫」是指什麼? 如果是for(int i = 0; i < w; i++)delete black[i]; 那麼可以,效果一樣 如果是for(int i = 0; i < w; i)delete black[i++]; 那麼可以,結果一樣 如果是for(int i = 0; i < w; ++i)delete black[i++]; 那麼不行,原因是兩個++重複了 5樓:匿名使用者 對於拋棄返回值的整形自增運算,幾乎所有編譯器都會把i++和++i編譯成一樣的指令。所以在這裡是完全沒有區別的。 但是建議養成類似情形寫++i的習慣,因為不保證編譯器能將其他型別的變數運算也作優化,尤其是自己寫的型別。 要回答你的這個問題,不妨先根據你的問題先編寫一段小的示例程式 include include using namespace std int a 3 4 int main 這段示例程式在我本地上執行的結果為 a i 0 4214816 a i 4214816 a i 4214816 a i 0 42... 二維陣列a只有兩行,a 2 已經越界。請先給抄出明確答覆 陣列下標越bai界 解釋原因 du 首先陣列arrs 裡面包含兩個陣列,zhi長度是dao2,那麼最大的下標就是1 你的輸出語句 arrs 2 3 如果你想要輸出第二個陣列的地三個數應該是arrs 1 2 c語言問題,二維陣列的下標越界怎麼看... 陣列a n m a 0 0 是陣列中地抄址最小的元襲素。如果a 0 0 存放位址為n,那麼a i j 存放的位址就是 n i m sizeof t j sizeof t sizeof t 是每個元素所佔的儲存單元。故可以知道a 18 9 的儲存位址是 1000 18 10 10 2 9 5 2 11...c語言 二維陣列指標中的和,C語言 二維陣列指標中的 和
關於二維陣列下標越界的問題,c語言問題,二維陣列的下標越界怎麼看?
資料結構C語言已知二維陣列A採用行序為