C/C++ sizeof运算符:为什么sizeof('a')返回不同的值?

Khu*_*tel 5 c c++ memory

可能重复:
C/C++中的字符大小('a')

我是C的初学者,对此感到困惑.

C: 我尝试使用"%zu"修饰符在C中打印sizeof('a'),然后输出值4.

C++: 使用cout在C++中打印sizeof('a'),printf(使用上面的格式)都打印了值1.

我认为正确的值应该是1,因为'a'将被视为char.为什么不在C中返回4?这两种语言的操作规模是否都不同?如果是这样,有什么区别,为什么它会返回不同的值?我在两种情况下都使用了gcc编译器.

Bla*_*ack 11

在C中,'a'是一个字符常量,它被视为一个整数,因此你得到一个大小为4,而在C++中它被视为一个char.这是这里的问题的副本:

C/C++中的字符大小('a')

  • @mattnz - 如果您阅读链接的答案,您可以在评论(第一个也是唯一的答案)中清楚地看到`sizeof`和`int`是平台相关的.我没有解决这个问题,因为1.链接的线程解决它,我期望一个mod来关闭这个线程和2.鉴于提问者的问题的上下文,显然int的大小在他的机器上是4. (3认同)

归档时间:

查看次数:

2502 次

最近记录:

14 年 前