Константы (целочисленные и с плавающей запятой) на Atrduino

Добавлено 12 ноября 2018 в 23:42

Описание использования констант (целочисленных и с плавающей запятой) в скетчах для 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.010 
2.34E52.34 * 10^5234000
67e-1267.0 * 10^-120.000000000067

 

Теги

ArduinoПрограммирование

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.