sizeof('a')

#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++.


Keep it simple!
作者:N3verL4nd
知识共享,欢迎转载。
原文地址:https://www.cnblogs.com/lgh1992314/p/5834712.html