int
обычно составляет 32 бита, но в стандарте int
не гарантируется постоянная ширина. Поэтому, если мы хотим 32-битный int
, мы включаем stdint.h
и используем int32_t
.Номера с плавающей запятой с фиксированной шириной в C/C++
Есть ли эквивалент для этого для поплавков? Я понимаю, что это немного сложнее с поплавками, поскольку они не хранятся однородным образом, то есть знак, показатель, значимость. Я просто хочу double
, который, как гарантируется, будет храниться в 64 битах с 1 знаковым битом, 10-битным показателем и значительным значением 52/53 бит (в зависимости от того, подсчитываете ли вы скрытый бит).
Как правило, количество бит для int необходимо, поскольку оно кодирует некоторые типы флагов объектов. Зачем вам нужны заверения в точности ваших поплавков? В большинстве случаев я видел, как люди склонны переоценивать важность размеров случайных величин. Часто вам будет лучше использовать размер слова по умолчанию для машины, чем пытаться выжать 3 байта памяти или произвольно использовать 32-битные значения. –
@ Andrew-Khosravian Я пишу скриптовый язык, и я хотел бы иметь возможность предоставлять гарантии размера шрифта для моих пользователей. Это делает код, написанный на моем языке сценариев более переносимым. – Imagist
Переносимость в порядке, но вам нужно рисовать линию где-то - в конце концов, вы, вероятно, не ожидаете, что ваш язык сценариев будет запущен на PDP-11. Очень немногие платформы не поддерживают IEEE 754, и если это поддерживается, то разумное предположение о том, что double - это действительно 64 бита (поскольку это значение * double--recrecision с плавающей запятой *), и, во-вторых, , создайте проверку работоспособности, чтобы пользователи могли сообщить об этом, и вы можете обрабатывать эту платформу отдельно. Если платформа не поддерживает IEEE 754, вы не сможете получить это представление в любом случае, если вы не реализуете его самостоятельно. –