# Типы данных

## void <a href="#void" id="void"></a>

Ключевое слово void используется при объявлении функций, если функция не возвращает никакого значение при ее вызове (в некоторых языках программирования такие функции называют процедурами).

```
// в функциях "setup" и "loop" производятся некоторые действия,
// но ничего не возвращается во внешнюю программу

void setup()
{
  // ...
}

void loop()
{
  // ...
}
```

## boolean <a href="#boolean" id="boolean"></a>

Логический (булевый) тип данных — boolean. Может принимать одно из двух значений true или false. boolean занимает в памяти один байт.

```
int LEDpin = 5;       // Светодиод на входе 5
int switchPin = 13;   // выключатель на порту 13, замыкает на землю

boolean running = false;

void setup()
{
  pinMode(LEDpin, OUTPUT);
  pinMode(switchPin, INPUT);
  digitalWrite(switchPin, HIGH);      // включаем подтягивающий резистор
}

void loop()
{
  if (digitalRead(switchPin) == LOW)
  {  // выключатель нажат, т.к. подтягивающий резистор будет давайть HIGH на входе, если не замкнут напрямую на землю
    delay(100);                        // ждем 0.1сек
    running = !running;                // меняем значение булевой переменной
    digitalWrite(LEDpin, running)      // включаем или выключаем светодиод.
  }
}
```

## char <a href="#char" id="char"></a>

Переменная типа char занимает 1 байт памяти и может хранить один алфавитно-цифровой символ (литеру). При объявление литеры используются одиночные кавычки: 'A' (двойные кавычки используется при объявлении строки символов - тип string: "ABC").

Символ хранится в памяти как число, соответствующее коду символа в [таблице кодировки символов ASCII](https://www.arduino.cc/en/Reference/ASCIIchart). Т.к. символ хранится как число в памяти над ним возможно производить арифметические действия (например, 'A' + 1 будет 66, т.к. ASCII код для 'A' - 65).

Тип char знаковый тип, т.е. число (код) хранящийся в памяти может принимать значения от -128 до 127. Если необходим беззнаковая однобайтовая переменная, используйте тип byte.

```
char myChar = 'A';
char myChar = 65;      //Варианты эквивалентны
```

## unsigned char <a href="#unsignedchar" id="unsignedchar"></a>

An unsigned data type that occupies 1 byte of memory. Same as the byte datatype.

The unsigned char datatype encodes numbers from 0 to 255.

For consistency of Arduino programming style, the byte data type is to be preferred.

```
 unsigned char myChar = 240;
```

## byte <a href="#byte" id="byte"></a>

Тип данных byte 8-ми битное беззнаковое целое число, в диапазоне 0..255.

```
byte c = B10010;  // "B" префикс двоичной системы счисления(B10010 = 18 в десятичной системе счисления)
```

## int <a href="#int" id="int"></a>

Тип данных int (от англ. integer - целое число) один их наиболее часто используемых типов данных для хранения чисел. int занимает 2 байта памяти, и может хранить числа от -32 768 до 32 767 (от -2^15 до 2^15-1)

Для размещения отрицательных значений int использует, так называемый, дополнительный код представления числа. Старший бит указывает на отрицательный знак числа, остальные биты инвертируются с добавлением 1.

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

```
int ledPin = 13;
```

**Замечание по использованию типа int** Когда переменная типа int в следствие арифметической операции достигает своего максимального значения, она "перескакивает" на самое минимальное значение и наоборот:

```
int x
x = -32,768;
x = x - 1;       // x теперь равно 32,767 - перескакивает на минимальное значение

x = 32,767;
x = x + 1;       // x теперь равно -32,768
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://brat-ya-vol-t-voltbro-com.gitbook.io/kurs-molodogo-inzhenera/mikrokontroller/osnovy-yazyka-s/tipy-dannykh.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
