Учитывая, что у меня есть следующая программа, которая определяет размер многобайтовых символов.
#include<iostream>
int main()
{
std::cout<<"size of multibyte characters : "<<sizeof('ab')<<std::endl;
}
мой НКУ Компилятор выдает 4.
Итак, у меня есть следующие вопросы:
sizeof('ab')
равно sizeof(int)
?Это так называемый литерал, состоящий из нескольких символов, который, в отличие от его односимвольного аналога, не относится к типу char
но типа int
(при условии, что это поддерживается). Как указано в [Lex.ccon] / 2, Акцент мой:
Символьный литерал, который не начинается с u8, u, U или L, является
обычный буквальный символ. Обычный буквальный символ, который
содержит один C-символ, представимый в наборе символов выполнения
имеет тип char, со значением, равным числовому значению кодировки
с-символ в наборе символов выполнения. Обычный персонаж
литерал, содержащий более одного c-символа, является мультисимволом
буквальный. Многозначный буквальный, или обычный буквальный символ
содержащий один C-символ, не представимый в исполнении
набор символов, условно поддерживается, имеет тип int, и имеет
значение, определяемое реализацией.
Итак, вы печатаете sizeof(int)
, как вы и подозревали.
Других решений пока нет …