Ermagerd

The following C code is valid (and compiles):

#include <stdio.h>

int main(int argc, char *argv[])
{
   int ‹= 10;

   while (‹)
   {
      printf("Hello World!\n");
      ‹--;
   }
}

Warning: Contains unicode characters.
Also, not tested on gcc, just msvc (which compiles it quite happily).

And as one of my colleagues has just pointed out, more whimsically:

#include <stdio.h>

int main(int argc, char *argv[])
{
   int ☺ = 10;

   while (☺)
   {
      printf("Hello World!\n");
      ☺--;
   }
}

While happy, print. Excellent.