Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
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

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)
    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.

Danny Kalev
 
Comment and Contribute

 

 

 

 

 


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

 

 

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