2011-09-15 111 views
0

出於某種原因,我得到一個錯誤:語句對此行沒有影響。聲明沒有效果

for (j = idx; j < iter ; j + increment) { 
     printf("from loop idx = %i", (int)idx); 
     func(ctxt, j); 
    } 
+0

這真的是一個錯誤嗎?不是一個警告? – 2011-09-15 20:59:16

+0

這不是一條線。 –

回答

9

你大概的意思是寫j += increment而不是j + increment

+0

謝謝,就是這樣。 ...我感到羞愧,我沒有抓住它。必須很累 – Dave

1

你會得到這個錯誤?多酷,我希望我的編譯器做到了。基本j + increment將返回這兩個的總和,但j不會被修改,因此您的循環可能會永遠運行。

+0

雅我在Mac上使用Xcode。試試吧:) – Dave

+0

如果你有'gcc','-Werror'選項(帶'-Wall')將警告轉化爲錯誤; '-Werror = unused-value'將這個問題中的具體警告轉爲錯誤。 – pmg

4

更換

j + increment 

隨着

j += increment 
5

我認爲你的意思j += increment,爲j + increment實際上並沒有改變j或是沒有任何副作用 - 它是沒有影響的說明,這是編譯器告訴你的

+0

它甚至可能被編譯器優化過,所以它什麼都不做,甚至沒有評估。 – 2011-09-15 21:00:58

+0

如果在森林裏增加'j',並且沒有人聽到板載聲卡屏蔽不好的噪音,它真的發出了聲音嗎? –

0

很明顯你的意思是+ =,但如果不是這樣,那麼'vola平鋪'限定符應該防止警告。