我想写这样的东西,但我不确定如何。
for(int i = 0; i < ( the greater value between intA and intB ); i++)
答案 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语句。使用三元运算符不足以支持未来的主权。但那只是我的个人意见。