/ (division)
Оператор / делит два числа и возвращает результат, тип которого зависит от операндов: целые дают целое, а для дроби нужен хотя бы один float.
Полная статья
Описание
Оператор / — это деление, одна из четырёх базовых арифметических операций. Он принимает два операнда — делимое и делитель — и вычисляет их частное. Тип результата определяется типами операндов, что важно учитывать при работе с дробными числами.
Синтаксис
result = numerator / denominator;
Параметры
result: переменная, в которую записывается результат деления. Допустимые типы:int,float,double,byte,short,long.numerator: делимое — переменная или константа. Допустимые типы:int,float,double,byte,short,long.denominator: делитель — переменная или константа, не равная нулю. Допустимые типы:int,float,double,byte,short,long.
Пример кода
int a = 50;
int b = 10;
int c = 0;
c = a / b; // переменная 'c' получает значение 5 после выполнения этого оператора
Как читать результат
Тип результата деления определяется типами операндов, а не типом переменной, в которую он записывается:
- Если оба операнда — целые числа (
int,long,byteи т. д.), выполняется целочисленное деление: дробная часть отбрасывается без округления. Например,7 / 2даст3, а не3.5. - Если хотя бы один из операндов имеет тип
floatилиdouble, вычисление выполняется с плавающей запятой и результат будет дробным. - Если результат с плавающей запятой записывается в целочисленную переменную (
int,longи т. д.), дробная часть молча отбрасывается. Это не ошибка компилятора, но частый источник неожиданных значений.
Чтобы получить дробный результат от деления двух целых чисел, достаточно явно привести один из операндов к float: (float)numerator / denominator.
Примечания и предупреждения
- Деление на ноль — грубая ошибка. На микроконтроллерах Arduino это обычно приводит к непредсказуемому поведению или зависанию. Всегда проверяйте делитель перед операцией, если он вычисляется динамически.
- Целочисленное деление отбрасывает остаток, а не округляет. Если нужен остаток, используйте оператор
%(остаток от деления). - Смешанные типы: если один операнд
float, а другойint, компилятор автоматически приведётintкfloatперед вычислением — это ожидаемое поведение. - Точность
float: типfloatна AVR-платах (Uno, Nano, Mega) имеет точность около 6–7 значащих цифр. Для критичных вычислений это может быть недостаточно.
Где применяется
- Масштабирование показаний сенсоров: например, перевод сырого значения АЦП в реальную величину (напряжение, температуру).
- Усреднение: деление суммы накопленных значений на их количество для вычисления среднего.
- Таймеры и частоты: вычисление периода из частоты или разбивка интервала на равные части.
- Отображение на дисплее: пересчёт пикселей, позиций или диапазонов под размер экрана.
float a = 55.5;
float b = 6.6;
int c = 0;
c = a / b; // переменная 'c' хранит значение 8, а не ожидаемый результат 8.409