1

2 つの unsigned long パラメータ zInit と zFinal を受け取る関数があり、これらの値を含む zInit から zFinal への for ループを記述したいと考えています。

現在、私はそうしています:

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

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

}

問題は、デルタで行ったのと同じように、zFinal と zInit の比較に応じて、「以下」または「以上」の条件を指定したいことです。これに適した C++ ソリューションは何ですか? 2 つのループを記述したくないし、値 zFinal を個別に扱いたくありません。

4

3 に答える 3

1
for (unsigned long k=zInit; k*delta <= zFinal*delta; k+=delta)
于 2012-10-13T14:54:04.597 に答える
1

zInit と zFinal を既に比較しました。それで:

for (unsigned long k=zInit; delta > 0 ? k <= zFinal : k >= zFinal ; k += delta)
于 2012-10-13T14:58:45.987 に答える
0

同じ解決策:

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