C/C++ sizeof operator: Why does sizeof( 'a' ) return different values?

c, c++, memory

Solution

In C, the `'a'` is a character constant, which is treated as an integer, so you get a size of 4, whereas in C++ it's treated as a `char`. This is a duplicate of the question here:

Size of character ('a') in C/C++

Problem

Possible Duplicate: Size of character ('a') in C/C++ I am a beginner at C, and was confused by this. `C:` I tried printing the sizeof( 'a' ) in C using the "%zu" modifier, and it prints a value 4. `C++:` Printing sizeof( 'a' ) in C++ using cout, and printf(using the format above) both printed a value 1. I believe the correct value should be 1, since 'a' will be taken as a char. Why doesn't it return 4 in C? Are the sizeof operations of both different in both the languages? If so, what's the difference, and why does it return a different value? I used the gcc compilers in both cases.

Original source

Related problems