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.

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

However this can be used the other way.

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

It means the following.

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?

  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

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 };
}
Categories: Blog
M. Saqib: Saqib is Master-level Senior Software Engineer with over 14 years of experience in designing and developing large-scale software and web applications. He has more than eight years experience of leading software development teams. Saqib provides consultancy to develop software systems and web services for Fortune 500 companies. He has hands-on experience in C/C++ Java, JavaScript, PHP and .NET Technologies. Saqib owns and write contents on mycplus.com since 2004.
Related Post