以下测试结果均在VS2013环境下做的测试:
#include
<stdio.h>
#include
<stdlib.h>
int
main()
{
char
a =
'0'
;
printf(
"%d\n"
,
sizeof
(
char
));
printf(
"%d\n"
,
sizeof
(a));
printf(
"%d\n"
,
sizeof
(
'0'
));
system(
"pause"
);
return
0;
}
在C中,返回结果为1 1 4
#include
<iostream>
using
namespace
std;
int
main()
{
char
a =
'0'
;
cout <<
sizeof
(
char
) << endl;
cout <<
sizeof
(a) << endl;
cout <<
sizeof
(
'0'
) << endl;
system(
"pause"
);
return
0;
}
在C++中,输出结果为1 1 1
原因如下:
在C99标准中,‘a’叫做整形字符常量,被看做是int型,在32位系统下,是4个字节。
在ISO标准下,‘a’叫做字符字面量,被看做char类型,所以是1个字节。
(没有上传图片(偷个懒),可以自己测试一下)