------- Comment #1 from pinskia at gcc dot gnu dot org 2006-10-13 16:54 ------- 'a' in C is not of the type char but instead int so not warning there is correct really. Also you forgot one thing '%' does not have to match up with the ANSI character set so it could be negative in signed char which means char (which could default to signed char) would be different.
Anyways the above expliation should resolve what is the current behavior GCC has with its warning. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29455