Is Arduino ANSI compatible ?

First of all, as of 1990, the ANSI C standard became the iSO C standard with modifications (ANSI is one of the US standards bodies, ISO is world wide standards).

The language the IDE supports is C++, not C. While C++ is mostly upwards compatible with C, there are differences in the corner cases.

At the standardization level C has two levels, hosted and freestanding. I believe C++ is the same way. Arduino comes in as a freestanding implementation, but the library does implement some of the libraries from the hosted standard (things like memcpy, malloc/new, etc.).

C++ and C both came out with new versions of the standards recently. For the C language, this is the C11 standard (C99/C90 being the previous two ISO versions, C89 being the ANSI standard before the ISO certification process). For the C++ lanuage, this is the C++11 standard (C++98 was the previous ISO standard).

Finally, the Arduino team has decided to stay on a rather old version of GCC (4.3.2 that was released on August 27, 2008). GCC 4.8.0 was just released on March 22nd, 2013. So the C++ that is currently supported in the Arduino IDE is based on the C++98 standard.

And yes, I have been a language lawyer in the past, and I was on the original ANSI X3J11 C standards committee many years ago.