Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Константы и литералы в C: целочисленные, вещественные, символьные, строковые и определение констант

Что такое константы и литералы?

Литерал — это запись фиксированного значения в коде (42, 3.14, 'A', "Hello"). Константа — именованное значение, которое не меняется во время выполнения. В C константы создаются через #define или const.

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

Могут быть в 3 системах счисления:

ОснованиеПрефиксПримерЗначение
Десятеричноенет212212
Восьмеричное003226
Шестнадцатеричное0x или 0X0xFF255

Суффиксы типа

Указывают точный тип литерала (регистронезависимы, порядок любой):

Без суффикса компилятор выбирает первый подходящий тип из: int, long, long long, unsigned int, unsigned long, unsigned long long.

Примеры

85        // int (decimal)
0213      // int (octal)
0x4b      // int (hex)
30u       // unsigned int
30l       // long
30ul      // unsigned long
0xFeeL    // long (hex)
215u      // unsigned int
078       // ОШИБКА: 8 не октальная цифра
032UU     // ОШИБКА: повтор суффикса

Вещественные литералы

Синтаксис: цифры . цифры [e|E [+|-] цифры] [суффикс]

Суффиксы

Примеры

3.14159      // double
314159E-5L   // long double
510E         // ОШИБКА: неполный экспонент
210f         // ОШИБКА: нет точки или экспоненты (это int)
.e55         // ОШИБКА: нет целой или дробной части

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

Заключены в одинарные кавычки: 'A', '9', '\n'. Тип — int (в C! в C++ — char). Размер — sizeof(int).

Escape-последовательности

ПоследовательностьЗначениеКод (hex)
\aЗвонок (BEL)0x07
\bBackspace0x08
\fForm feed (новая страница)0x0C
\nНовая строка (LF)0x0A
\rВозврат каретки (CR)0x0D
\tГоризонтальная табуляция0x09
\vВертикальная табуляция0x0B
\\Обратный слеш \0x5C
\'Одинарная кавычка '0x27
\"Двойная кавычка "0x22
\?Вопросительный знак ?0x3F
\oooВосьмеричный код (1-3 цифры)напр. \101 = 'A'
\xhh...Шестнадцатеричный код (1+ цифр)напр. \x41 = 'A'
\uhhhhUnicode (16 бит, C11)U+HHHH
\UhhhhhhhhUnicode (32 бит, C11)U+HHHHHHHH

Пример

printf("Строка 1\nСтрока 2\tТаб\nЗвонок\a");

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

Заключены в двойные кавычки: "Hello". Тип — char[] (массив), заканчивается неявным \0 (null-terminator).

const char *msg = "Это длинная строка, "
                  "которая разбита на несколько строк "
                  "для читаемости кода.";

Определение именованных констант

1. Препроцессор: #define

#define PI 3.14159265358979323846
#define MAX_SIZE 1024
#define GREETING "Hello, World!"
#define FLAG (1 << 3) // выражения допустимы

Особенности:

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

const double PI = 3.14159265358979323846;
const int MAX_SIZE = 1024;
const char *GREETING = "Hello, World!";

Преимущества:

3. enum для целочисленных констант

enum Color { RED, GREEN, BLUE }; // RED=0, GREEN=1, BLUE=2
enum ErrorCode { OK = 0, ERR_IO = 1, ERR_MEM = 2 };

Преимущества: типобезопасность (в отладчике видно имя), группировка, автоматическая нумерация.

Сравнение подходов

Характеристика#defineconstenum
ТипНет (текст)Даint (enum type)
Область видимостиФайл (до конца)Блок/файлБлок/файл
ПамятьНетДа (обычно оптимизируется)Нет (константы)
Адрес (&)НетДаНет
ОтладкаНетДаДа (имена)
ВыраженияДаТолько константныеКонстантные

Рекомендации

Язык C

  1. Комплексный обзор резисторов, катушек и конденсаторов в цепях переменного тока
  2. Понимание ключевых слов и идентификаторов C#: правила, списки и лучшие практики
  3. Классы и объекты в C#: Фундаменты надёжного ООП
  4. Абстрактные классы и методы в C#: практическое руководство
  5. Частичные классы и методы в C#: понимание и применение
  6. Sealed-классы и sealed-методы в C#: когда использовать, примеры и повышение безопасности кода
  7. Освоение переменных, литералов и констант в C++: подробное руководство
  8. Ключевые слова и идентификаторы в C: практическое руководство
  9. Переменные, константы и литералы в C: полное руководство
  10. Переменные, типы данных и константы в C — практическое руководство