我有一个接收两个无符号长参数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。
答案 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)