2012-10-13 200 views
1

我有一個函數接收兩個無符號長整型參數zInit和zFinal,我想寫一個for循環從zInit到zFinal包括這些值。for循環的條件C++

目前,我這樣做:

int delta= (zFinal>=zInit?1:-1); 

for (unsigned long k=zInit; k!=zFinal;k+=delta) 
{ 

} 

的問題是我要指定條件「小於或等於」或「大於或等於」視zFinal和zInit之間的比較,同爲我與三角洲做了。什麼是一個好的C++解決方案?我不想寫兩個循環,我不想單獨處理值zFinal。

回答

0

相同的解決方案:

for (unsigned long k=zInit; zFinal>=zInit ? k<=zFinal : k>=zFinal ;k+=delta) 
+0

簡單而高效。謝謝! – Cristi

1
for (unsigned long k=zInit; k*delta <= zFinal*delta; k+=delta) 
+0

因簽名轉換爲無符號而失敗。 –

1

您已經比較zInit和zFinal;所以:

for (unsigned long k=zInit; delta > 0 ? k <= zFinal : k >= zFinal ; k += delta) 
+1

我喜歡這個,雖然我會說'delta> 0'而不是'delta == 1'來使它更通用。 –

+0

是的,我也是。所以修改它! :-) – RGO