например, делает:
wchar_t x;
переведите в:
unsigned short x;
Короче: в C может быть, в C ++ нет.
Широко. C определяет wchar_t как typedef, но в Unix он обычно составляет 4 байта (поэтому обычно не короткий), а в Windows 2 он может быть коротким.
В C ++ это уникальный встроенный тип, например char
или int
, поэтому вы можете законно перегрузить void foo (short x)
и void foo (wchar_t x)
Для C wchar_t
является typedef
. Является ли это синонимом для unsigned int
, является ли это вообще беззнаковым типом или имеет ли он 4 байта, определяется реализацией.
В C ++ wchar_t
является отдельным встроенным типом. Здесь также его размер и подпись определяются реализацией.
Не обязательно; это может быть 4-байтовый размер или любой другой размер, выбранный реализацией.
Это зависит от компилятора.
Стандарт не требует, чтобы wchar_t был беззнаковым. Он может быть и знаковым. И должен существовать другой тип того же размера; но стандарт не говорит прямо, что этот другой тип должен быть коротким.
"те же требования к размеру, знаковости и выравниванию, что и у одного из других интегральных типов, называемого его базовым типом" (C++98 §3.9.1).
В компиляторах языка Си это типизация, обычно определяемая в stddef.h
Нет, это не так. Это переводится как 'широкий персонаж'. Делать какие-либо предположения о том, каким он окажется на конкретной платформе, неверно и противоречит всей цели наличия wchar_t в первую очередь.
Смысл использования абстракции в том, чтобы отделить семантическое значение типа от его базового представления.