2012-10-13 204 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