There are always few little known or hidden features in each programming language. AT 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.

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

However this can be used the other way.

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


if (y < 0)
y = 20;
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 background.

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

 static void foo (void) { }
static void bar (void) {
return foo(); // Note this return statement.
int main (void) {
return 0;

Even you could write something like

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

for (int i=0; i<10; i++, doSomethingElse())
/* whatever */

C99 has some awesome any-order structure initialization.

struct foo{
int x;
int y;
char* name;

void main(){
foo f = { .y = 23, .name = "awesome", .x = -38 };