Hacker News new | ask | show | jobs
by The_Egg_Man 4983 days ago
Could someone break this down and explain it to me? [1] It looks hilariously atrocious yet interesting at the same time.

[1]: http://stackoverflow.com/questions/1642028/what-is-the-name-...

3 comments

Basically, somebody sees some code with two operators (decrement and less than) with no whitespace between them and thinks it's a single operator.

The answer that shows it with the brackets is probably the clearest:

    while ((x--) > 0)
    { ... }
The compiler sees that as the same as (x--> 0)

So it checks if x is more than zero and then decrements it each loop iteration.

  #define as ;while
  ...
  do printf("n is %d\n", n) as ( n --> 0);
Parses to (white space adjusted for clarity):

  do printf("n is %d\n", n);
  while ( n-- > 0);
The preprocessor replaces the macro "as" with ";while" creating a do-while loop.

  do {
   printf("%d",x);
  } while (x-- > 0);