2

在 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 .......
       //.....
   }
}
4

5 回答 5

6

我会选择min(x[i], y[i]),只是因为它更清晰,但我没有看到您的代码有直接问题。

于 2012-05-24T05:48:49.190 回答
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我不确定这是否适合您的用例。

于 2012-05-24T06:03:47.210 回答
2

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

于 2012-05-24T05:49:18.117 回答
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...............

 }
于 2012-05-24T08:14:05.443 回答
1

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

于 2012-05-24T06:04:01.267 回答