c ++ 11 — Является ли sizeof (‘ab’) равным sizeof (int) в C ++?

Учитывая, что у меня есть следующая программа, которая определяет размер многобайтовых символов.

#include<iostream>

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

мой НКУ Компилятор выдает 4.

Итак, у меня есть следующие вопросы:

  • Каков размер многобайтового литерала?
  • Является sizeof('ab') равно sizeof(int)?

3

Решение

Это так называемый литерал, состоящий из нескольких символов, который, в отличие от его односимвольного аналога, не относится к типу charно типа int (при условии, что это поддерживается). Как указано в [Lex.ccon] / 2, Акцент мой:

Символьный литерал, который не начинается с u8, u, U или L, является
обычный буквальный символ. Обычный буквальный символ, который
содержит один C-символ, представимый в наборе символов выполнения
имеет тип char
, со значением, равным числовому значению кодировки
с-символ в наборе символов выполнения. Обычный персонаж
литерал, содержащий более одного c-символа, является мультисимволом
буквальный. Многозначный буквальный
, или обычный буквальный символ
содержащий один C-символ, не представимый в исполнении
набор символов, условно поддерживается, имеет тип int, и имеет
значение, определяемое реализацией.

Итак, вы печатаете sizeof(int), как вы и подозревали.

13

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]