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

msc*_*msc 3 c++ sizeof c++11 multibyte-characters

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

#include<iostream>

int main()
{
   std::cout<<"size of multibyte characters : "<<sizeof('ab')<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我的GCC编译器输出为4.

所以我有以下问题:

  • 多字节字符文字的大小是多少?
  • sizeof('ab')等于sizeof(int)

Sto*_*ica 13

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

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

所以你打印sizeof(int),如你所怀疑的那样.