Константы (целочисленные и с плавающей запятой) на Atrduino
Описание использования констант (целочисленных и с плавающей запятой) в скетчах для Arduino и особенности их записи в зависимости от системы счисления.
Содержание
Целочисленные константы
Описание
Целочисленные константы – это числа, которые используются непосредственно в скетче, например, 123. По умолчанию эти числа рассматриваются как int
, но вы можете изменить это с помощью модификаторов U
и L
(смотрите ниже).
Обычно целочисленные константы рассматриваются как целые числа с основанием 10 (десятеричные), но для ввода чисел с другими основаниями могут использоваться специальные обозначения (форматер).
Основание | Пример | Форматер | Комментарий |
---|---|---|---|
10 (десятеричный) | 123 | нет | |
2 (двоичный) | B1111011 | ведущая 'B' | работает только с 8-битными значениями (от 0 до 255), корректны символы 0 и 1 |
8 (восьмеричный) | 0173 | ведущий '0' | корректны символы 0-7 |
16 (шестнадцатеричный) | 0x7B | ведущие '0x' | корректны символы 0-9, A-F, a-f |
Десятеричные (основание 10)
Это обычная математика, с которой вы знакомы. Предполагается, что константы без префиксов представлены в десятеричном формате.
Пример кода
n = 101; // то же, что и десятеричные 101 ((1 * 10^2) + (0 * 10^1) + 1)
Двоичные (основание 2)
Корректны только символы 0 и 1.
Пример кода
n = B101; // то же, что десятеричные 5 ((1 * 2^2) + (0 * 2^1) + 1)
Двоичный форматер работает только с байтами (8 бит) между 0 (B0) и 255 (B11111111). Если вам удобно вводить int
(16 бит) в двоичной форме, то можете сделать это двухэтапной процедурой, такой как:
myInt = (B11001100 * 256) + B10101010; // B11001100 это старший байт
Восьмеричные (основание 8)
Корректны только символы от 0 до 7. Восьмеричные значения указываются с помощью префикса "0" (ноль).
Пример кода
n = 0101; // то же, что десятеричные 65 ((1 * 8^2) + (0 * 8^1) + 1)
Можно допустить (непреднамеренно) сложно отыскиваемую ошибку, включив ведущий ноль перед константой, и компилятор нечаянно интерпретирует вашу константу как восьмеричную.
Шестнадцатеричные (основание 16)
Корректные символы находятся от 0 до 9 и буквы от A до F. A имеет значение 10, B – это 11, и так далее до F, которая равна 15. Шестнадцатеричные значения указываются префиксов "0x". Обратите внимание, что A-F могут быть и в верхнем (A-F), и в нижнем (a-f) регистре.
Пример кода
n = 0x101; // то же, что десятеричные 257 ((1 * 16^2) + (0 * 16^1) + 1)
Примечания и предупреждения
Форматеры U
и L
:
По умолчанию целочисленная константа рассматривается как int
с соответствующим ограничениями значений. Чтобы указать целочисленную константу с другим типом данных, сделайте с помощью:
- '
u
' или 'U
', чтобы привести константу в формат данныхunsigned
(пример: 33u); - '
l
' или 'L
', чтобы привести константу в формат данныхlong
(пример: 100000L); - '
ul
' или 'UL
', чтобы привести константу в форматunsigned long
(пример: 32767ul).
Константы с плавающей запятой
Описание
Аналогично целочисленным константам, константы с плавающей запятой используются, чтобы сделать код более читаемым. Константы с плавающей запятой во время компиляции заменяются на значение, которому соответствует выражение.
Пример кода
n = 0.005; // 0.005 это константа с плавающей запятой (точкой)
Примечания и предупреждения
Константы с плавающей запятой также могут быть выражены в различных научных обозначениях. 'E' и 'e' считаются корректными индикаторами экспоненты.
Константа с плавающей запятой | Соответствует | Также соответствует |
---|---|---|
10.0 | 10 | |
2.34E5 | 2.34 * 10^5 | 234000 |
67e-12 | 67.0 * 10^-12 | 0.000000000067 |