1

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

4

3 回答 3

1

You have already compared zInit and zFinal; so:

for (unsigned long k=zInit; delta > 0 ? k <= zFinal : k >= zFinal ; k += delta)
于 2012-10-13T14:58:45.987 回答
1
for (unsigned long k=zInit; k*delta <= zFinal*delta; k+=delta)
于 2012-10-13T14:54:04.597 回答
0

相同的解决方案:

for (unsigned long k=zInit; zFinal>=zInit ? k<=zFinal : k>=zFinal ;k+=delta)
于 2012-10-13T14:50:11.097 回答