3

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

#include<iostream>

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

我的GCC编译器的输出为 4。

所以我有以下问题:

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

1 回答 1

13

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

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

所以你 print sizeof(int),正如你所怀疑的那样。

于 2017-11-05T19:23:41.057 回答