C Числовое обозначение с плавающей запятой

Я заметил, что этот код компилируется, но я понятия не имею, почему:

int main() {
  double z = 0.000000000000001E-383DD;
}

Но я не уверен, что DD в конце числа означает. Я просмотрел стандарт, но об этом ничего не сказано.

Я получил этот номер из следующей команды:

$ gcc -dM -E - < /dev/null
#define __DBL_MIN_EXP__ (-1021)
#define __FLT_MIN__ 1.17549435e-38F
#define __DEC64_DEN__ 0.000000000000001E-383DD
...

Может ли это быть расширение GCC?

3 ответа

Решение

Правильно, это расширение GCC для указания 64-битных десятичных литералов с плавающей запятой.

Другие расширения суффиксы:

Да, это расширение GCC для поддержки десятичного числа с плавающей точкой. Литерал имеет тип _Decimal64, но преобразуется при назначении на double переменная.

Может быть, это означает плотно упакованный десятичный разряд в 64 бита?

Этот раздел статьи в Википедии выглядит так, как будто он соответствует названию определения, нет?

Другие вопросы по тегам