6.14 Шестнадцатеричные числа с плавающей запятой
ISO C99 поддерживает числа с плавающей запятой, записанные не только в обычной десятичной нотации, например 1.55e1, но также числа, такие как 0x1.fp3 , записанные в шестнадцатеричном формате. Как расширение GNU, GCC поддерживает это в режиме C90 (за исключением некоторых случаев, когда требуется строгое соответствие) и в C++. В этом формате обязательны шестнадцатеричный префикс «0x» и поле экспоненты «p» или «P». Экспонента — это десятичное число, которое указывает на степень 2, на которую умножается значимая часть. Таким образом, «0x1.f» — это 1 15/16, «p3» умножает его на 8, а значение 0x1.fp3 равно 1.55e1.
В отличие от чисел с плавающей запятой в десятичной нотации, экспонента всегда требуется в шестнадцатеричной нотации. В противном случае компилятор не смог бы разрешить неоднозначность, например, 0x1.f. Это может означать 1.0f или 1.9375, так как «f» также является расширением для констант с плавающей запятой типа float.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-5.5.0/gcc/Hex-Floats.html