在“for”循环条件下使用“三元运算”是一种好习惯吗?

时间:2012-05-24 05:44:36

标签: c++ for-loop conditional-statements ternary-operator

在for循环条件中使用三元运算是一个好习惯。 我问这个是因为我遇到过这样的情况:三元操作将解决我在for循环条件下的问题。

例如:

for( short i = 0 ; i < count ; i++ ){
   for( short j = 0 ; j < ( ( x[i] < y[i] ) ? x[i] : y[i] ) ; j++ ){ //Here I am using ternary operation at for loop condition place
       //.....
       //.....Some Code Here .......
       //.....
   }
}

5 个答案:

答案 0 :(得分:6)

我会选择min(x[i], y[i]),因为它更清晰,但我没有看到您的代码立即出现问题。

答案 1 :(得分:3)

就个人而言,我会选择min(x[i], y[i])。但是,您的可读性问题可以通过预先计算值并使用它来处理:

for( short i = 0 ; i < count ; i++ ){
   int jCount = ( x[i] < y[i] ) ? x[i] : y[i]; // or min equivalent
   for( short j = 0 ; j < jCount ; j++ ){ 

   }
}

这会稍微改变行为,因为它会使条件无法在x[i]循环内更改为y[i]j。我不确定这是否适合您的用例。

答案 2 :(得分:2)

如果你可以使用三元运算符,那么没有理由不在你的for循环条件下使用它。 (我自己喜欢三元运算符,但我知道有些人认为它是混淆的)

答案 3 :(得分:2)

我没有看到任何问题。

我的建议。
1. short更改为int 2. #define ternary(可选)。

#define cond(n)  (( x[n] < y[n] ) ? x[n] : y[n] )

for( int a = 0; a < count; a++)
  for( int b = 0; b < cond(a), b++)
 {

  ........code...............

 }

答案 4 :(得分:1)

我想使用三元运算符没有问题,除了它使代码不可读。但是像x[i] < y[i] ) ? x[i] : y[i]这样的条件有时可能会产生问题,以防你同时修改x[i] and y[i] insdide for循环。所以我建议不要使用,除非你真的知道你在做什么