C Числовое обозначение с плавающей точкой - PullRequest
2 голосов
/ 20 марта 2012

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

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 ]

7 голосов
/ 20 марта 2012

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

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

1 голос
/ 20 марта 2012

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

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

1 голос
/ 20 марта 2012

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

...