> For the complete documentation index, see [llms.txt](https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/5.-konstrukcii-yazyka.-opredelenie-peremennykh-tipov-dannykh-i-funkcii-kommentarii-direktivy..md).

# 5. Конструкции языка. Определение переменных, типов данных и функций, комментарии, директивы.

## Определение переменных

**Переменная** – именованная область памяти, в которой хранятся данные определенного типа. В отличие от констант, значение переменных данных может изменяться в ходе выполнения программы.

**Тип переменной** определяет: размер переменной в байтах и представление переменной в памяти.

**Имя переменной** может включать в себя символы английского алфавита, цифры (но не начинаться с них) и знак подчёркивания.&#x20;

*\[тип переменной] \[имя переменной];* - объявление переменной

*\[тип переменной] \[имя переменной] = \[значение переменной];* – инициализация/определение (присваивание начального значения) переменной

:star:Ключевые слова не могут быть использованы как имена переменных.

:star:Размер типов данных может отличаться в зависимости от компьютера.

## Тип данных

**Тип данных** определяет диапазон значений и операций, которые могут быть применены к этим значениям.

знаковые целые: int, short, long, long long, char&#x20;

беззнаковые целые: unsigned int/short/long/long long/char&#x20;

вещественные: float, double, long double

## Функции

**Функция** — это самостоятельная единица программы, которая спроектирована для реализации конкретной подзадачи.

В ходе реализации программы функции нужно объявлять до реалиации всех остальных.

```
[тип возвращаемого значения] [имя функции] (аргументы)
{
    Тело функции
}
```

## **Комментарии**

**Комментарии** существенно облегчают понимание программы. Все, что находится между открывающей (/\*) и закрывающей (\*/) последовательностями, компилятор игнорирует. Для однострочных комментариев можно использовать символы //

:star: Существует третий вид комментариев /\*\* \*/ - его используют для документаций

## Директивы

**Директивы препроцессора** - инструкции выполняемые до компиляции программы на стадии препроцессинга. Все директивы препроцессора начинаются со знака #. После директив препроцессора точка с запятой не ставится.

### Основные директивы препроцессора

\#include — вставляет текст из указанного файла\
\#define — задаёт макроопределение (макрос) или символическую константу\
\#undef — отменяет предыдущее определение\
\#if — осуществляет условную компиляцию при истинности константного выражения\
\#ifdef — осуществляет условную компиляцию при определённости символической константы\
\#ifndef — осуществляет условную компиляцию при неопределённости символической константы\
\#else — ветка условной компиляции при ложности выражения\
\#elif — ветка условной компиляции, образуемая слиянием else и if\
\#endif — конец ветки условной компиляции\
\#line — препроцессор изменяет номер текущей строки и имя компилируемого файла\
\#error — выдача диагностического сообщения\
\#pragma — действие, зависящее от конкретной реализации компилятора.
