I\'ve been looking through someone else\'s code for debugging purposes and found this:
!m_seedsfilter ? good=true : m_seedsfilter==1 ? good=newClusters(Sp) :
To answer your main question, this is an example of a conditional expression:
conditional-expression: logical-OR-expression logical-OR-expression ? expression : conditional-expression
If the logical-OR-expression evaluates to true
, then the result of the expression is the expression following the ?
, otherwise it's the expression following the :
. For example,
x = y > 0 ? 1 : 0;
will assign 1 to x
if y
is greater than 0, otherwise it will assign '0'.
You're right to feel queasy about the example because it's badly written. The author is trying to use the ?:
operator as a control structure, which it's not meant for.
A better way to write this would be
good = !m_seedsfilter ? true :
( m_seedsfilter == 1 ? newClusters(SP) :
newSeed(SP) );
If m_seedsfilter
equals 0, then good
will be set to true
. If m_seedsfilter
equals 1, then good
will be set to the result of newClusters(SP)
. Otherwise, good
will be set to the result of newSeed(SP)
.