Курс Microsoft edX C ++: двойное против длинного двойного - почему нет единого стандарта? - PullRequest
0 голосов
/ 03 мая 2018

Я занимаюсь разработкой программного обеспечения А.С. Программа на получение степени в местном колледже. Я хочу опередить мою программу обучения в колледже (которая мне кажется слишком упрощенной). Итак, я изучаю разные языки и технологии везде, где могу (онлайн).

Я решил пройти курс Microsoft C ++ по edX. Согласно им, double и long double одинаковы по размеру и диапазону (см. Скриншот ниже). Это противоречит этим спецификациям:

https://en.wikipedia.org/wiki/C_data_types

Сначала я думал, что Microsoft сделает опечатку, но потом нашел этот пост :

В архитектуре x86 большинство компиляторов реализуют long double как 80-битный тип расширенной точности, поддерживаемый этим оборудованием (иногда хранится как 12 или 16 байтов для поддержки структуры данных.

и

Компиляторы также могут использовать long double для 128-битной четверной точности формат, который в настоящее время реализован в программном обеспечении.

Другими словами, да, длинный дубль может хранить больший диапазон значений, чем двойной. Но это полностью зависит от компилятора.

Итак, я подумал, что в большинстве случаев (то есть в большинстве реализаций компилятора) Microsoft ошибается, но в некоторых случаях они могут быть правы.

Но потом я пересмотрел стандарт C ++ 11. И вот что это говорит:

Существует три типа с плавающей точкой: float, double и long double. Тип double обеспечивает как минимум такую ​​же точность, как и float, и Тип long double обеспечивает как минимум такую ​​же точность, как double. набор значений типа float является подмножеством набора значений тип двойной; набор значений типа double является подмножеством набор значений типа long double.

Смутно, верно?

Итак, вот вопрос : C ++ существует давно. Почему до сих пор нет единого стандарта для такого рода вещей? Намеренно ли это ради гибкости - каждый сам решает, какими будут эти типы данных. Или они просто не могут получить всех на борту?

Спасибо.

Скриншот: Microsoft C ++ на edX

P.S. Я все еще думаю, что Microsoft должна была написать это по-другому: что-то вроде «Long Double имеет такой же размер, как double или больше (до ... байтов)».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...