If you want to write portable C code, then I’d suggest you to write in C89 (old ANSI C standard). This standard is supported by most compilers.
The Intel C Compiler has very good C99 support and it produces fast binaries. (Thanks 0x69!)
MSVC supports some new features and Microsoft plan to broaden support in future versions.
GCC supports some new things of C99. They created a table about the status of C99 features. Probably the most usable feature of C99 is the variable length array, and GCC supports it now. Clang (LLVM’s C fronted) supports most features except floating-point pragmas.
Wikipedia seems to have a nice summary of C99 support of the compilers.