Ответ 1
0X2aE+10
- допустимый токен препроцессора, который не переводится в действительный токен C, следовательно, ошибка компиляции. C99 Шестнадцатеричные числа с плавающей запятой используют P
или P
в качестве маркера экспоненты, как в:
float x = 0X2aP+10;
Которая имеет значение 0x2a * 1024
→ 43008
.
Для тех, кто не знает о номерах предварительной обработки:
6.4.8 Номера предварительной обработки
Синтаксис
pp-number: digit . digit pp-number digit pp-number identifier-nondigit pp-number e sign pp-number E sign pp-number p sign pp-number P sign pp-number .
Описание
Номер предварительной обработки начинается с цифры, которой необязательно предшествует период (.), и за ней могут следовать действительные символы идентификатора и последовательности символов
e+
,e-
,e+
,e-
,p+
,p-
,p+
илиp-
.Лекции для предварительной обработки номеров лексически включают все маркеры с плавающей точкой и целые константы.
Семантика
Номер предварительной обработки не имеет типа или значения; он приобретает как после успешного преобразования (как часть фазы перевода 7), так и в токен с плавающей константой или токен цельной константы.