假設您撰寫了一個 for 回圈:
for (int i = 0; i < 10; i )
for (int j = 0; j < 10; j )
那是 for 回圈創建 10 個不同的j變數,它是否在完成回圈后i解除分配?j
我見過很多人這樣做:
int i, j, k
for (i = 0; i < 10; i )
for (j = 0; j < 10; j )
//..All The Loops..//
在所有回圈之前宣告變數有什么好處i j k,還是只是個人喜好?
uj5u.com熱心網友回復:
所有有問題的變數都是在自動存盤中創建的。當它們超出范圍時,它們將被銷毀。這兩個示例只是宣告了不同范圍內的變數。
在第一個示例中,i范圍為外回圈,i僅在回圈運行時才存在。它在回圈開始時創建,在回圈結束時銷毀:
for (int i = 0; i < 10; i ) { <- created here
<statements>
} <- destroyed here
與j內回圈相同:
for (int i = 0; i < 10; i ) { <- i created here
for (int j = 0; j < 10; j ) { <- j created here
<statements>
} <- j destroyed here
} <- i destroyed here
在第二個例子中,變數的作用域是存在回圈的外部塊。因此,變數在外部回圈開始之前就已經存在,并且在回圈結束后它們繼續存在。
{
...
int i, j, k; <- created here
for (i = 0; i < 10; i )
for (j = 0; j < 10; j )
...
...
} <- destroyed here
uj5u.com熱心網友回復:
for (int i = 0; i < 10; i ) 只能在 C99 或 C11 模式下使用,這是一種更現代的風格。
i當使用非常舊的編譯器時,您應該在使用它之前宣告它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/414414.html
標籤:
下一篇:在Swift中不使用sqrt生根
