+ -
当前位置:首页 → 问答吧 → 【讨论】sizeof('A')=1 还是4

【讨论】sizeof('A')=1 还是4

时间:2010-07-19

来源:互联网

#include <stdio.h>
int main()
{
      printf("sizeof('A')=%d\n", sizeof('A'));
      return 0;
}

如果将上述代码保存为a.c
则用gcc a.c 编译后运行的结果为 sizeof('A')=4
如果将上述代码保存为a.cpp
则用gcc a.c 编译后运行的结果为 sizeof('A')=1

用VC++6.0编译也出现同样的情况, 扩展名为c则结果为4, 扩展名为cpp,则结果为1

作者: cnhnyu   发布时间: 2010-07-19

应该c++的编译器有优化过吧!

作者: liexusong   发布时间: 2010-07-19

有优化? 能把sizeof的值优化的不对了

作者: cnhnyu   发布时间: 2010-07-19

本帖最后由 专操五毛 于 2010-07-19 15:57 编辑

龟腚就是这样啊。
C中是sizeof(int), c++是sizeof(char)
本来c为了效率,规定了'A'为int。
而c++为了能cout<<'A',就把'A'改成了char

作者: 专操五毛   发布时间: 2010-07-19

老问题了,C 里面字符常量都是 int 型;C++ 里面单字符常量是 char 型,多字符常量是 int 型(以上不考虑宽字符)。
和优化什么的没有关系。

作者: 变异老鼠   发布时间: 2010-07-19

刚才查了一下msdn,貌似是这么一回事

作者: cnhnyu   发布时间: 2010-07-19

4l

作者: 俺小时候可帅了   发布时间: 2010-07-19

这里很早以前有一个类似的帖子

作者: hellioncu   发布时间: 2010-07-19

无聊啊,每年都重复一样的话题。

作者: prolj   发布时间: 2010-07-19