Little known features of C/C++

There are always few little known or hidden features in each programming language. At StackOverflow.com someone started a series of posts “Hidden features of” programming languages. The Hidden Features series is great for people who are new to a certain language.

I have collected few of the features of both C and C++ here.

Like the ternary operator; most of the programmers are familiar with.

1 x = ( y < 0 ) ? 10 : 20 ;

However this can be used the other way.

(y < 0 ? x : y) = 20;

It means the following.

1 2 3 4 5 6 if ( y < 0 ) { y = 20 ; } else { x = 20 ; }

Another feature is Resource Acquisition Is Initialization (RAII) which is often ignored by the programmers coming from non object oriented world i.e. C programming background.

Can you write a return statement in a function that returns void?

1 2 3 4 5 6 7 8 9 10 static void foo ( void ) { } static void bar ( void ) { return foo ( ) ; // Note this return statement. } int main ( void ) { bar ( ) ; return 0 ; }

Even you could write something like

1 static void foo ( ) { return ( void ) "i'm discarded" ; }

The comma operator isn’t widely used. It can certainly be abused, but it can also be very useful. One of the most common use is

1 2 3 4 for ( int i = 0 ; i < 10 ; i ++ , doSomethingElse ( ) ) { /* whatever */ }

C99 has some awesome any-order structure initialization.