. Окончание
f или
F указывает на тип
float, а
l или
L - на тип
long double.
Целое значение помимо десятичного может иметь восьмеричное или шестнадцатеричное представление. Если константа начинается с нуля, то она представлена в восьмеричном виде, если с 0x или с 0X, то - в шестнадцатеричном. Например, десятичное целое 31 можно записать как 037 или как 0X1F. Записи восьмеричной и шестнадцатеричной констант могут завершаться буквой L (для указания на тип long) и U (если нужно показать, что константа беззнаковая). Например, константа 0XFUL имеет значение 15 и тип unsigned long.
Символьная константа есть целое, записанное в виде символа, обрамленного одиночными кавычками, например 'x'. Значением символьной константы является числовой код символа из набора символов на данной машине. Например, символьная константа '0' в кодировке ASCII имеет значение 48, которое никакого отношения к числовому значению 0 не имеет. Когда мы пишем '0', а не какое-то значение (например 46), зависящее от способа кодировки, мы делаем программу независимой от частного значения кода, к тому же она и легче читается. Символьные константы могут участвовать в операциях над числами точно так же, как и любые другие целые, хотя чаще они используются для сравнения с другими символами.
Некоторые символы в символьных и строковых константах записываются с помощью эскейп-последовательностей, например \n (символ новой строки); такие последовательности изображаются двумя символами, но обозначают один. Кроме того, произвольный восьмеричный код можно задать в виде
>'\ooo'
где ооо - одна, две или три восьмеричные цифры (0:7) или
>'\xhh'
где hh - одна, две или более шестнадцатеричные цифры (0…9, а…f, A…F). Таким образом, мы могли бы написать
>#define VTAB '013' /* вертикальная табуляция в ASCII */
>#define BELL '\007' /* звонок в ASCII */
или в шестнадцатеричном виде:
>#define VTAB '\xb' /* вертикальная табуляций в ASCII */
>#define BELL '\x7' /* звонок в ASCII */
Полный набор эскейп-последовательностей таков:
>\а сигнал-звонок
>\b возврат-на-шаг (забой)
>\f перевод-страницы
>\n новая-строка
>\r возврат-каретки
>\t горизонтальная-табуляция
>\v вертикальная-табуляция
>\\ обратная наклонная черта
>\? знак вопроса
>\' одиночная кавычка
>\" двойная кавычка
>\ooo восьмеричный код
>\xhh шестнадцатеричный код
Символьная константа '\0' - это символ с нулевым значением, так называемый символ null. Вместо просто 0 часто используют запись '\0', чтобы подчеркнуть символьную природу выражения, хотя и в том и другом случае запись обозначает нуль.
Константные выражения - это выражения, оперирующие только с константами. Такие выражения вычисляются во время компиляции, а не во время выполнения, и поэтому их можно использовать в любом месте, где допустимы константы, как, например, в