考虑到我有以下程序可以确定多字节字符的大小。
#include<iostream>
int main()
{
std::cout<<"size of multibyte characters : "<<sizeof('ab')<<std::endl;
}
我的GCC编译器的输出为 4。
所以我有以下问题:
- 多字节字符文字的大小是多少?
sizeof('ab')
等于sizeof(int)
? _
考虑到我有以下程序可以确定多字节字符的大小。
#include<iostream>
int main()
{
std::cout<<"size of multibyte characters : "<<sizeof('ab')<<std::endl;
}
我的GCC编译器的输出为 4。
所以我有以下问题:
sizeof('ab')
等于sizeof(int)
? _这是一个所谓的多字符文字,与它的单字符对应物不同,它不是 type char
,而是 type int
(假设它受支持)。如[lex.ccon]/2中所述,强调我的:
不以 u8、u、U 或 L 开头的字符文字是普通字符文字。包含在执行字符集中可表示的单个 c-char 的普通字符文字具有 char 类型,其值等于执行字符集中 c-char 编码的数值。包含多个 c-char 的普通字符文字是多字符文字。多字符文字或包含无法在执行字符集中表示的单个 c-char 的普通字符文字是有条件的,具有 int 类型,并具有实现定义的值。
所以你 print sizeof(int)
,正如你所怀疑的那样。