Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: All
Jul 9, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Use the Conditional Operator Judiciously

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)

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.

Danny Kalev
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date