当前位置: 技术问答>linux和unix
一个有关sizeof的问题
来源: 互联网 发布时间:2015-08-13
本文导语: 用gcc编译: 1) char c = 'a'; printf("%dn", sizeof(c)); //结果: 1 2) printf("%dn", sizeof('a')); //结果: 4 ?? 不明白,请高手指点 | 这是C语言标准里对常量的规定。字符常量是作为int的。这个在...
用gcc编译:
1)
char c = 'a';
printf("%dn", sizeof(c)); //结果: 1
2)
printf("%dn", sizeof('a')); //结果: 4 ??
不明白,请高手指点
1)
char c = 'a';
printf("%dn", sizeof(c)); //结果: 1
2)
printf("%dn", sizeof('a')); //结果: 4 ??
不明白,请高手指点
|
这是C语言标准里对常量的规定。字符常量是作为int的。这个在c++里改回了char型。你用g++编译就知道了。
|
sizeof('a')没有什么意义,只能说明字符常量是按整型存的。
|
'a'编译时是当作int处理的
|
同意2楼的
char类型显式声明是1个字节的
如果没有显式生命则可能是按照整型存放
char类型显式声明是1个字节的
如果没有显式生命则可能是按照整型存放
|
sizeof 将'a'处理为整型
将c处理为字符型!
将c处理为字符型!
|
1)-->
a是做字符处理,所以sizeof(a)=1;
2)-->
'a'是以整型处理的,sizeof('a')等于sizeof(int)
sizeof(int)=1;
a是做字符处理,所以sizeof(a)=1;
2)-->
'a'是以整型处理的,sizeof('a')等于sizeof(int)
sizeof(int)=1;
|
VC里边也是这样,
|
呵呵,楼上的都说拉!
|
的确‘character’是当作整数处理的
|
实际上字符是转换为整数在处理的,所以你做sizeof('a')肯定是4啊