Possible Duplicate:
Why are C character literals ints instead of chars?
Why when using C does sizeof('x') return 4 but sizeof('x') in C++ returns 1?
C++ normally strives to be nothing more than a superset of C so why do the two results diverge?
Edit
Just some further clarification. This seems like a deliberate move on the part of the standards committee and I assume changing the size of ‘x’ would not have been done without a good reason. I am interested in what the reason is.
To quote the C++ standard ISO 14882:2003, annex C.1.1 clause 2.13.2
(annex C describes the incompatibilities between C and C++)