Bit of history for you first - C was invented within the 70s by Dennis Ritchie, by the 80s it had grow to be quite well-liked and a book (known as the C programming language) was published by Ritchie and Kernighan which acted as an informal standard (known as K&R C.) Throughout the 80s ANSI were working towards a formal standard,
which appeared in 1989 called C89. Some finetuning was done in 1990 and a new standard, C90 was published.
All good - until 1999, when another version of the standard was published, called C99. Why is this a problem? Well whilst compilers implement C90, none implement the whole of the C99 standard. You,
may be thinking that C99 isn't all that important then - wrong, C99 allows us to do things such as declare variables throughout the code and use the C++ (//) style comment... but whilst many compilers do support these, none promise to support all aspects of the standard. I have often wondered why.
As an aside, there is some work towards a new standard, not sure if/when it will be released though - its informally called "C1x"