The conditional operator,?, is a shorthand for a sequence of if-else statements. Although it has legitimate uses, in many cases programmers tend to misuse it, thereby producing unintelligible and buggy code. Sometimes, the use of the conditional operator yields undefined behavior. Consider this example:
int n = 1; n = (n != 0) ? n++ : 0;
The value of n is unknown after the second statement executes. Not only is the expression n = (n != 0) ? n++ : 0; highly unreadable, it also yields undefined behavior, because when n is not 0, the expression evaluates to n = n++; which is undefined. Note that a well-behaved version of this expression is still unreadable.
n = (n != 0) ?(n+1) : 0; //well-behaved but still cryptic
Now consider a much simpler and well-behaved form that does exactly what the convoluted n = (n != 0) ?(n+1) : 0; does:
if (n!=0) n++;
This form is a significant improvement. It is best to avoid using the conditional operator in order to save a few keystrokes. Most of the time, you will find that a plain if-else sequence is more intelligible, efficient and well-behaved.