for循环c ++中的条件

时间:2012-10-13 14:48:03

标签: c++ stl

我有一个接收两个无符号长参数zInit和zFinal的函数,我想写一个从zInit到zFinal的for循环,包括这些值。

目前我正在这样做:

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

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

}

问题是我想根据zFinal和zInit之间的比较来指定条件“小于或等于”或“大于或等于”,这与我对delta的处理方式相同。什么是一个很好的C ++解决方案?我不想写两个循环,我不想单独处理值zFinal。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您已经比较了zInit和zFinal;所以:

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

答案 2 :(得分:0)

相同的解决方案:

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