Тип | Занимаемый размер (байт) | Минимальное значение | Максимальное значение |
---|---|---|---|
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