zl程序教程

您现在的位置是:首页 >  其它

当前栏目

sizeof('a')

&# 39 sizeof
2023-09-27 14:26:12 时间
#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++.