C++ “使用”是一种良好的做法吗;“三元运算”;在;至于;循环条件?

C++ “使用”是一种良好的做法吗;“三元运算”;在;至于;循环条件?,c++,for-loop,conditional-statements,ternary-operator,C++,For Loop,Conditional Statements,Ternary Operator,在for-loop条件下使用三元运算是一种良好的做法。 我问这个问题是因为我遇到了这样一种情况,即在三元操作中,将在for-loop条件下解决我的问题 例如: 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 condit

在for-loop条件下使用三元运算是一种良好的做法。 我问这个问题是因为我遇到了这样一种情况,即在三元操作中,将在for-loop条件下解决我的问题

例如:

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 .......
       //.....
   }
}
for(短i=0;i
我会选择
min(x[I],y[I])
,只是因为它更清晰,但我看不出你的代码有什么直接的问题。

如果你对一般使用三元运算符没问题,那么没有理由不在for循环条件下使用它。(我自己也喜欢三元运算符,但我知道有些人认为它很模糊)

我个人喜欢
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++ ){ 

   }
}
for(短i=0;i

这在某种程度上改变了行为,因为它使条件对
j
循环内的
x[i]
y[i]
的变化视而不见。我不确定这是否适合您的用例。

我想使用三元运算符没有问题,只是它会使代码不可读。但是像这样的条件
x[i]
有时会产生问题,如果您也在修改
x[i]和y[i]
insdide for循环。所以我建议不要使用,除非你真的知道你在做什么,我看不出有什么问题

我的建议。
1.
short
更改为
int

2. <代码>#定义三元
(可选)

定义条件(n)((x[n]
提前谢谢你的宝贵建议。你也应该去掉所有的空格。@CrazyEddie:谢谢你的建议。我只是想知道,这有什么不同吗?@CrazyEddie:谢谢你的回答。上面就是一个例子。。我正在做一些相似但不完全相同的事情。谢谢。如果您确实想更清楚,因为给出的表达式
j
值得考虑;考虑实际表达式可能有类似的方法……如果您将其设置为宏,我更希望您将其设置为函数,说真的。@Xeo:对于上述情况,我将使用内联函数。
#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...............

 }