如果在for循环中声明?

时间:2011-09-16 19:27:04

标签: objective-c ios xcode

我想写这样的东西,但我不确定如何。

for(int i = 0; i < ( the greater value between intA and intB ); i++)

5 个答案:

答案 0 :(得分:5)

for语句中间的表达式与任何if语句完全相同;只有当表达式求值为true时,循环才会继续。因此,有一些逻辑上等效的方式来写你想要的东西:

// using a ternary operator
for (int i=0; i < ((intA > intB) ? intA : intB); ++i)
{
    // do stuff
}

// using a simple Boolean OR
for (int i=0; i < intA || i < intB; ++i)
{
    // do stuff
}

// using a MAX macro
for (int i=0; i < MAX(intA, intB); ++i)
{
    // do stuff
}

但是在你的特定情况下,这些都不是理想的,因为前两个并不是非常清晰的代码,并且它们都在循环的每次迭代中评估intA vs intB。甚至更好的是:

int maxAB = MAX(intA, intB);
for (int i=0; i < maxAB; ++i)
{
   // do stuff
}

答案 1 :(得分:2)

使用三元运算符:

for(int i = 0; i < (intA > intB ? intA : intB); i++)

答案 2 :(得分:1)

使用tha MAX宏。

MAX( a, b )

如果它不可用,您可以定义它:

#define MAX( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) )

答案 3 :(得分:0)

for(int i = 0; i < ((a) < (b) ? (a) : (b)); i++)

答案 4 :(得分:0)

我建议在每次执行for语句之前使用MAX宏或使用额外的if语句。使用三元运算符不足以支持未来的主权。但那只是我的个人意见。