#include <iostream> using namespace std; int main(void) { cout << sizeof('a') << endl; return 0; }
MINGW ,.cpp结果为:1 .c结果为4
VS2013 .c结果为:4 .cpp结果为1
原因:
C99标准的规定,'a'叫做整型字符常量(integer character constant),被看成是int型,所以在32位机器上占4字节。
ISO C++标准规定,'a'叫做字符字面量(character literal),被看成是char型,所以占1字节。
CSDN解释:
https://support.microsoft.com/en-us/kb/150380
CAUSE The specification on this point is different for C from what it is for C++. In C, a character constant is of type int. In C++, a character constant is of type char. Multicharacter constants are implementation dependent. RESOLUTION When using C, do not use sizeof to determine the width of a character constant. Use sizeof("") to give the width of one character in both C and C++.