Арифметические операторы на языке C

Язык C

Компилируемый язык Си поддерживает все стандартные арифметические операции:

  • умножение;
  • деление;
  • сложение;
  • вычитание;
  • возведение в степень и прочие.

Одни из них осуществляются с помощью обычных операторов (плюсов, минусов, звёздочки, знака процентов), другие — специальных функций, которые содержаться в основном в библиотеке math.h. Операторы принято делить на тернарные, унарные, базовые бинарные, лево-присевающие бинарные и тернарные.

В данной статье идёт речь, прежде всего, об арифметических операциях и операторах, связанных с ними. Чем префикс отличается от постфикса? Как и почему нельзя найти остаток от деления у вещественных чисел? Как использовать static_cars?

Арифметика в Си и Си++

Присваивание

Позволяет присваивать переменной некоторое значение согласно типу, с помощью которой переменная была инициализирована.

Оператор » = «. 

int a_1 = 16;
double a_2 = 12.6;
flout a_3 = 13.3;
char a_4 = 255;
bool a_5 = 3;

Не путать с оператором сравнения ==, который применяется главным образом в условиях и циклах!

Примечание:  Далее будут встречаться операторы » += «, » -= «, » *= «, » %= » и » /= «. Их тоже относят к операторам присваивания, но для большего раскрытия материла они занесены в другой раздел.

Сложение и вычитание.

Используется для нахождения соответственно суммы и разности инициализированных переменных или чисел.

Оператор » + » для сложения и » — » для вычитания.

int a = 3, b = 6;
int c_1 = a+b, c_2 = a-b; // c_1 = 9 и c_2 = -3
int c_3 = c + t; // выдаст ошибку, так как переменная t не инициализирована
int c_4 = 4 + 5; // c_4 = 9

Часто для сложения и вычитания используют операторы » += » и » -= «, но их больше относят к операторам присваивания. Они используются для упрощения записи кода программы.

Пример:

int c_5 += 5; // соответствует записи c_5 = c_5 + 5
int c_6 -= 12; // соответствует записи c_6 = c_6 — 12

Инкремент

В зависимости от того, является ли оператор префиксным или постфиксным, прибавляет единицу или сразу при присвоении, или позже. Инкремент удобно использовать в циклах for, while и do…while.

Оператор » ++n » для префиксной и » n++ » для постфиксной переменной n.

int a = 3;
int b = 3;
int x1 = a++; // x1 = 3
int x2 = ++b; // x2 = 4

Декремент

В зависимости от того, является ли он префиксным или постфиксным, вычитает единицу или сразу, или позже. Как и в случае с инкрементом, декремент тоже используется при записи циклов.

Оператор » —n » для префиксной и » n— » для постфиксной переменной n.

int a = 3;
int b = 3;
int x1 = a—; // x1 = 3
int x2 = —b; // x2 = 2

Деление

Оператор позволяет находить частное целочисленных и вещественных значений переменных. Результат операции зависит от типа переменных. При делении любого значения на нуль компилятор выдаёт предупреждение, которое часто выглядит так:

main.cpp:17:11: warning: division by zero [-Wdiv-by-zero]
Floating point exception (core dumped)

Оператор » / «.

double a = 3.5, b = 1.9;
int c = a / 0; // warning!
int c_1 = a / b; // c_1 = 1
double c_2 = a / b; // c_2 = 1.84211
float c_3 = a / b; // c_3 = 1.84211
bool c_4 = a / b; // c_4 = 1

Оператор » /= » так же используется для деления целых и вещественных чисел.

int c_5 /= b; // соответствует записи c_5 = c_5 / b

Умножение

Позволяет находить произведение переменных и чисел. В зависимости от типа переменных выдаётся или целочисленный, или вещественный результат.

Оператор » * «.

double a = 3.5, b = 1.9;
int c_1 = a * b * 2; // c_1 = 13
double c_2 = a * b * 2; // c_2 = 13.3
float c_3 = a * b; // c_3 = 6.65
bool c_4 = a * b; // c_4 = 1

Оператор » *= » так же используется для перемножения целых и вещественных чисел чисел.

int c_5 *= b; // соответствует записи c_5 = c_5 * b

Не путать с указателями, которые тоже обозначаются звёздочкой!

Остаток от деления

В языках Си и Си++ данная операция используется только с целыми числами. При работе с такими типами, как float и double, нужно смотреть за корректностью выполнения программы. В одних случаях, их использование с оператором проходит без особых проблем, а в других — выдаёт ошибки компиляции.

Оператор » % «.

int a = 16, b = 8, d = 9;
int c_1 = a % b; // c_1 = 0
int c_2 = d % b; // c_2 = 1
int c_3 = b % d; // c_3 = 8
float c_4 = b % d; // c_4 = 8 -> ошибки нет
float a1 = 16, b1 = 8, d1 = 9;// error!!!
int c_5 = a1 % b1;

Оператор » %= » для данный операции тоже можно использовать.

int c_6 %= b; // соответствует записи c_6 = c_6 % b

Остаток от деления вещественных чисел

Операция остаток от деления у вещественных чисел невозможна, так как в процессе деления как таковой остаток вообще нельзя получить. Однако, если даны вещественные значения и оператор static_cast, можно без проблем применить данный оператор.

Пример:

double a = 16.8, b = 8.3, d = 9.6;
auto a_1 = static_cast<int>(a);
auto b_1 = static_cast<int>(b);
auto d_1 = static_cast<int>(d);
int c_1 = a_1 % b_1; // c_1 = 0
int c_2 = d_1 % b_1; // c_2 = 1
int c_3 = b_1 % d_1; // c_3 = 8

Чем отличаются унарные, бинарные и тернарные операторы?

Всего существует два унарных оператора: плюс » + » и минус » — «. Оба пишутся непосредственно перед операндом. Унарный плюс редко используется, так как он возвращает значение операнда. К бинарным относят сложение » + «, вычитание » — «, умножение » * «, деление » / «, остаток от деления » % «. Таким образом, есть всего 5 операций, которые применяются к 2-м операндам.

В языке Си существует только один тернарный оператор, который является условной операцией » ? : «, состоящей из трёх операндов. В общем виде запись тернарного оператора выглядит так:

условие ? выражение_1 : выражение_2

Если условие верно или истинно, то выполняется выражение_1. В противном случае выражение_2.

Пример:

int a = 3, b = 6;
a == b ? cout << «Yes» : cout << «No»; // No
a + 3 == b ? cout << «Yes» : cout << «No»; // Yes
a > b ? cout << a : cout << b; // 6

Куда делась операция возведения в степень?

В языках Си и Си++ не существует оператора, позволяющего возводить некоторое число в степень. Вместо него есть специальная функция pow(), которая подключается библиотекой math.h (для Си) или cmath (для Си++).

Пример:

#include <iostream>
#include <cmath>
using namespace std;
int main() {
cout << pow(2, 3); // число 2 возводиться в 3-ю степень, выводится 8
cout << pow(2.9, 3); // число 2.9 возводиться в 3-ю степень, выводится 24.389
return 0;
}

Оцените статью
Образовательный портал WELCOME4U.RU
Добавить комментарий

Adblock
detector