2011-02-15 102 views
23

爲什麼我在這個函數中得到了i ++上的死代碼警告?死代碼警告?

​​
+1

增加了'java'標記,因爲這個問題比Android更接近Java。 – fiction 2011-02-15 13:07:55

+0

通過移動返回來解決「」;在循環之外並且移除最後的返回null;感謝所有的快速回答 – 2011-02-15 15:11:15

回答

55

有循環沒有機會爲for不止一次,因爲你正在返回:

return ""; 

因此,i++不會永遠執行,這就是爲什麼你會得到一個死代碼警告。也許你想刪除return "";和/或將它放在for之外。

+0

你是對的,回報「」;被置於循環之外。現在我知道它是在我的臉上跳躍:o)謝謝 – 2011-02-15 13:23:42

13

這是因爲i++通常在for-block結束後執行,並且在您的函數中,for-block的結尾永遠不會到達,因爲在該塊中無條件地返回一個值。

一個for循環

for (A; B; C) { 
    D; 
} 

在內部轉換爲以下:

A; 
while (B) { 
    D; 
    C; 
} 

你可以看到,如果D總是從函數返回,C永遠不會達到。這是投訴的內容。

5

由於return "";聲明,您將只執行一次循環。

3

就你的情況而言,下面的語句在無條件運行時會導致問題,並且會在執行for循環時始終運行。所以它永遠不會達到我的++,所以它的死代碼。

return "";