考虑到我有以下程序来确定多字节字符的大小。
<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')
?答案 0 :(得分:13)
这是一个所谓的多字符文字,与单字符对应文字不同,不是char
类型,而是类型int
(假设支持它)。正如[lex.ccon]/2中所述,强调我的:
不以u8,u,U或L开头的字符文字是 普通字符文字。 一个普通的字符文字 包含可在执行字符集中表示的单个c-char 具有char 类型,其值等于编码的数值 执行字符集中的c-char。 一个普通的角色 包含多个c-char的文字是多字符 文字。多字符文字或普通字符文字 包含在执行中无法表示的单个c-char 字符集,是有条件支持的,类型为int ,并且有一个 实现定义的值。
所以你打印sizeof(int)
就像你怀疑的那样。