Целочисленные типы длиной 16 байт

Я собираю программу на C ++, используя GCC на 64 битах — машина / ОС / (с -m64 опция передана g++). Как и ожидалось, sizeof(long double) == 16 — Мне интересно, существует ли 16-байтовый стандартный тип для целых чисел?

Постскриптум __int128_t это искусственное расширение, которое эмулирует стандартный тип, как я понял. Кроме этого я ничего не нашел.

4

Решение

Нет, только гарантированные размеры для char, unsigned char & signed char, и они 1:

5.3.3 Sizeof [expr.sizeof]

1 Оператор sizeof возвращает количество байтов в объекте.
представление его операнда. Операнд является либо выражением,
который не оценивается, или идентификатор типа в скобках. Размер
оператор не должен применяться к выражению, которое имеет функцию или
неполный тип или тип перечисления перед всеми его перечислителями
были объявлены, или к названию в скобках таких типов, или к
lvalue, которое обозначает битовое поле. sizeof (char), sizeof (подписанный
char) и sizeof (unsigned char) равны 1. Результат sizeof применяется к
любой другой фундаментальный тип (3.9.1) определяется реализацией.
[ Заметка:
в частности, sizeof (bool) и sizeof (wchar_t)
определяется реализацией.74) — Конец примечания] [Примечание: см. 1.7 для
определение байта и 3,9 для определения объекта
представление. —Конечная записка]

(акцент мой)

2

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

Стандарт C ++ не стандартизирует размер каждого типа (принимает символ), но различие в размере по отношению друг к другу.

A char has to be 1 byte.
A short has to be >= to a char.
An int has to be >= to a short.
A long has to be >= to an int.
and a long long has to be >= to a long.

То же самое касается типов поплавка.

Я считаю, что большинство компиляторов теперь поддерживают целые числа до 8 байтов

однако я знаю, что некоторые, если не большинство, не имеют 16-байтовых целых чисел.

Я также думаю, что есть некоторые объектные классы / структуры, которые разработали люди для эмуляции 16-байтового целого числа, которое будет работать на большинстве компиляторов.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector