Язык C: константы и литералы



Книга Язык C: константы и литералы

Предыдущая статья: “Язык С: переменные


Константы — фиксированные величины, которые не изменяются во время выполнения программы. Эти фиксированные величины также называются литералами.


Константы могут относиться к любому из основных типов данных, например:


  • целочисленная константа;
  • константа с плавающей точкой;
  • символьная константа;
  • строковый литерал.

Используются также перечислимые константы.


С константами обращаются так же, как и с обычными переменными. Только значения констант не могут быть изменены после их определения.


Целочисленные литералы


Целочисленный литерал может быть десятичной, восьмеричной или шестнадцатеричной константой. Префикс определяет основание (радикс) целочисленной константы:


  • 0x или 0X — шестнадцатеричной;
  • 0 — восьмеричной;
  • отсутствие префикса — десятичной.

Целочисленный литерал может также иметь суффикс. Он представляет собой комбинацию букв U и L, означающих целое беззнакового и длинного типа (соответственно). Суффикс может быть прописной или строчной буквой и располагаться в любом порядке.


Вот несколько примеров целочисленных литералов:


212         /* верно */
215u /* верно */
0xFeeL /* верно */
078 /* неверно: 8 - не восьмеричное число */
032UU /* неверно: нельзя повторять суффикс */

Ниже приведены другие примеры различных типов целочисленных литералов:


85         /* десятичный */
0213 /* восьмеричный */
0x4b /* шестнадцатеричный */
30 /* целочисленный */
30u /* беззнаковый целочисленный */
30l /* длинный */
30ul /* беззнаковый длинный */

Литералы с плавающей точкой


Литерал с плавающей точкой состоит из целой части, десятичной точки, дробной части и экспоненты. Литералы с плавающей точкой можно представлять либо в десятичной форме, либо в экспоненциальной.


При представлении десятичной формы включают десятичную точку, экспоненту либо и то, и другое; а при представлении экспоненциальной формы — целую часть, дробную часть либо обе части. Знаковая экспонента обозначается символом e или E.


Вот примеры литералов с плавающей точкой:


3.14159       /* верно */
314159E-5L /* верно */
510E /* неверно: неполная экспонента */
210f /* неверно: отсутствует десятичная точка или экспонента */
.e55 /* неверно: отсутствует целая часть или дробь */

Символьные константы


Символьные литералы заключаются в одинарные кавычки; например, ‘x’ может храниться в простой переменной типа char.


Символьный литерал может быть:


  • обычным символом (например, ‘x’);
  • управляющей последовательностью (например, ‘\t’);
  • универсальным символом (например, ‘\u02C0’).

В языке С есть определенные символы, которые имеют особое значение, когда им предшествует обратный слэш, например, новая строка (
) или табуляция (\t).


Вот список таких кодов управляющей последовательности:


  • \\ — символ \
  • \’ — символ ‘
  • \” — символ “
  • \? — символ ?
  • \a — звуковой сигнал
  • \b — возврат на одну позицию (backspace)
  • \f — смена страницы

  •  — новая строка
  • \r — возврат каретки
  • \t — горизонтальная табуляция
  • \v — вертикальная табуляция
  • \ooo — восьмеричное число (от одной до трех цифр)
  • \xhh … … — шестнадцатеричное число (из одной или нескольких цифр)

Ниже приведен пример, показывающий несколько символов управляющей последовательности:


#include <stdio.h>

int main() {
printf("Hello\tWorld

");

return 0;
}

Когда приведенный выше код компилируется и выполняется, выдается следующий результат:


Hello World

Строковые литералы


Строковые литералы (константы) заключаются в двойные кавычки “”. Строка содержит символы, похожие на символьные литералы:


  • обычные символы;
  • управляющие последовательности;
  • универсальные символы.

Можно разбить длинную строку на несколько строк, используя строковые литералы и разделяя их пробельными символами.


Вот примеры строковых литералов. Все три формы являются идентичными строками:


"hello, dear"

"hello, \
dear"

"hello, " "d" "ear"

Определение констант


В языке С есть два простых способа определения констант:


  • Использование препроцессора #define.
  • Использование ключевого слова const.

Препроцессор #define


Ниже приведена форма использования препроцессора #define для определения константы:


#define identifier value

Следующий пример детально объясняет эту форму:


#include <stdio.h>

#define LENGTH 10
#define WIDTH 5
#define NEWLINE '
'

int main() {
int area;

area = LENGTH * WIDTH;
printf("value of area : %d", area);
printf("%c", NEWLINE);

return 0;
}

Когда приведенный выше код компилируется и выполняется, выдается следующий результат:


value of area : 50

Ключевое слово const


Префикс const используется для объявления констант с определенным типом следующим образом:


const type variable = value;

Пример, указанный ниже, детально объясняет эту форму:


#include <stdio.h>

int main() {
const int LENGTH = 10;
const int WIDTH = 5;
const char NEWLINE = '
';
int area;

area = LENGTH * WIDTH;
printf("value of area : %d", area);
printf("%c", NEWLINE);

return 0;
}

Когда приведенный выше код компилируется и выполняется, выдается следующий результат:


value of area : 50

Обратите внимание: хорошей практикой программирования является определение констант в ЗАГЛАВНЫХ БУКВАХ.



820   0  

Comments

    Ничего не найдено.