在C ++中,sizeof('ab')是否等于sizeof(int)?

时间:2017-11-05 19:19:44

标签: c++ c++11 sizeof multibyte-characters

考虑到我有以下程序来确定多字节字符的大小。

<div class="pickUpSquare">1</div>
<div class="pickUpSquare">2</div>
<div class="pickUpSquare">3</div>

我的GCC编译器输出为4。

所以我有以下问题:

  • 多字节字符文字的大小是多少?
  • #include<iostream> int main() { std::cout<<"size of multibyte characters : "<<sizeof('ab')<<std::endl; } 是否等于sizeof('ab')

1 个答案:

答案 0 :(得分:13)

这是一个所谓的多字符文字,与单字符对应文字不同,不是char类型,而是类型int(假设支持它)。正如[lex.ccon]/2中所述,强调我的:

  

不以u8,u,U或L开头的字符文字是   普通字符文字。 一个普通的字符文字   包含可在执行字符集中表示的单个c-char   具有char 类型,其值等于编码的数值   执行字符集中的c-char。 一个普通的角色   包含多个c-char的文字是多字符   文字。多字符文字或普通字符文字   包含在执行中无法表示的单个c-char   字符集,是有条件支持的,类型为int ,并且有一个   实现定义的值。

所以你打印sizeof(int)就像你怀疑的那样。