Arduino

технологии

Типы данных

Тип Занимаемый размер (байт) Минимальное значение Максимальное значение
boolean 1 false true
char 1 -128 127
byte 1 0 255
int, short 2 -32768 32767
unsigned int 2 0 65535
long 4 -2147483648 2147483647
unsigned long 4 0 4294967295
float, double 4 -3.4028235E+38 3.4028235E+38

boolean

Логический тип, может принимать только 2 значения - true (правда) и false (ложь). В памяти занимает 1 байт.

bool a = true;
a = false;
числа

char

Тип позволяет хранить 1 алфавитно-цифровой символ и занимае 1 байт. Для записи символа используются одинарные кавычки.

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

char a = 'A'; // число 65 по таблице ASCII
a++; // число 66, соответствующее символу 'B'
char b = 65; // тоже самое, что присвоить символ 'A'

Переменная это типа - знаковая, диапазон допустимых значений - от -128 до 127.

byte

Тип для хранения однобайтового целого беззнакового числа. Соответственно диапазон значений от 0 до 255.

byte x = 155;

int

Пожалуй самый частоиспользуемый тип для хранения целых чисел со знаком - integer (целое число). Занимает 2 байта и может хранить цисла от -32768 до 32767.

На платформе Arduino также присутствует тип , который ничем не отличается от типа int.

int y = 10;

unsigned int

Беззнаковое целое число, занимает так же, как и int, 2 байта. Диапазон значений - от 0 до 65535.

long

Тип long служит для хранение больших целых знаковых чисел. Диапазон его значений от -2147483648 до 2147483647, а занимает в памяти он 4 байта.

unsigned long

Беззнаковое целое число расширенного диапазона может хранить значения от 0 до 4294967295 и занимает 4 байта.

float

Тип данных чисел с плавающей точкой (или с плавающей запятой). Используется для нецелочисленных расчетов. В Arduino используется например для считывания значений с аналоговых пинов. Диапазон значений от -3.4028235E+38 до 3.4028235E+38,а занимает такая переменная 4 байта.

Точность - 6-7 знаков после запятой.

double

Тип ничем не отличается от типа float и введен для обратной совместимости. На многих других платформах он имеет большую чем у float точность.

string

Тип для хранение текстовых строк. Является массивом символов типа char и символа конца строки '\0' в последнем его элементе. Не путать с классами string и String.

Строка может быть создана и инициализирована несколькими способами:

char str[7]; // объявление пустой строки с резервированием 7 символов - 6 под строку и последний - под символ завершения строки
char str[7] = "qwerty"; // объявление строки с инициализацией начальным значением
char str[7] = {'q', 'w', 'e', 'r', 't', 'y', '\0'}; // посимвольная инициализация
char str[] = "qwerty"; // более удобная инициализация без указания размера - он посчитается автоматические с учетом символа конца строки 

Если забыть указать символ конца строки при посимвольной инициализации или не отвести под него место, то функции работы со строками будут работать некорректно.

массив

Массив - это набор элементов одного типа с доступом к каждому элементу по индексу.

int arr[6]; // объявление массива с выделением памяти под 6 элементов типа int
int arr[] = {1, 2, 3, 4, 5, 6}; // объявление массива с инициализацией его начальными значениями, при этом не обязательно указывать его размер, однако превышать его нельзя
char str[] = "qwerty"; // инициализация массива символов - строки   
Нумерация индексов массива начинается с 0.
int arr[10];
arr[0] = 123; // пример присвоение значения первому элементу массива
int b = arr[1]; // пример считывание значения из второго по счету элемента массива

void

Ключевое слово void используется при объявлении функции, которая не возвращает значения.

Преобразование типов

Преобразование типов - это приведение значение переменной к другому типа, отличному от типа данной переменной.

Приведение типов делится на явное и неявное.

Пример явного приведения типа:

float a = 7.5;
int b = (int)a; // в переменную b будет записано значение переменной a, приведенной к целочисленному типу, то есть число 7

Пример неявного приведения типа:

int a = 1;
if (a) {
  // код будет выполнен в случае ненулевого значения переменной a
}

Условная конструкция if принимает на вход значение типа boolean, поэтому целочисленное значение переменной a будет приведено к типа boolean.

Еще один пример явного приведения типа:

float res = (float)17 / 2; // в переменную res будет сохранение значение 8.5, тогда как без приведения к типу float в ней бы оказалось бы 8.0