Арифметические операции

Последнее обновление: 27.02.2023

Dart поддерживает все распространенные арифметические операции. В арифметических операциях участвуют числами. Есть бинарные арифметические операции (производятся над двумя операндами) и унарные (выполняются над одним операндом). К бинарным операциям относят следующие:

  • +

    операция сложения двух чисел:

    int a = 10;
    int b = 7;
    int c = a + b;  // 17
    int d = 4 + b;  // 11
    
  • -

    операция вычитания двух чисел:

    int a = 10;
    int b = 7;
    int c = a - b;  // 3
    int d = 4 - a;  // -6
    
  • *

    операция умножения двух чисел

    int a = 10;
    int b = 7;
    int c = a * b;  // 70
    int d = b * 5;  // 35
    
  • /

    операция деления двух чисел:

    int a = 20;
    int b = 5;
    double c = a / b;  // 4.0
    double d = 22.5 / 4.5;  // 5.0
    

    При делении стоит учитывать, что результат операции всегда представляет тип double.

  • ~/

    операция целочисленного деления двух чисел. Результат операции всегда представляет тип int:

    int a = 33;
    int b = 5;
    int c = a ~/ b;  // 6
    int d = 22 ~/ 4; // 5
    
  • %

    получение остатка от деления двух чисел:

    int a = 33;
    int b = 5;
    int c = a % b;  // 3
    int d = 22 % 4; // 2 (22 - 4*5 = 2)
    

Также есть две унарные арифметические операции, которые производятся над одним числом: ++ (инкремент) и -- (декремент). Каждая из операций имеет две разновидности: префиксная и постфиксная:

  • ++ (префиксный инкремент)

    Предполагает увеличение переменной на единицу, например, z=++y (вначале значение переменной y увеличивается на 1, а затем ее значение присваивается переменной z)

    int a = 8;
    int b = ++a;
    print(a);	// 9
    print(b);	// 9
    
  • ++ (постфиксный инкремент)

    Также представляет увеличение переменной на единицу, например, z=y++ (вначале значение переменной y присваивается переменной z, а потом значение переменной y увеличивается на 1)

    int a = 8;
    int b = a++;
    print(a);	// 9
    print(b);	// 8
    
  • -- (префиксный декремент)

    уменьшение переменной на единицу, например, z=--y (вначале значение переменной y уменьшается на 1, а потом ее значение присваивается переменной z)

    int a = 8;
    int b = --a;
    print(a);	// 7
    print(b);	// 7
    
  • -- (постфиксный декремент)

    z=y-- (сначала значение переменной y присваивается переменной z, а затем значение переменной y уменьшается на 1)

    int a = 8;
    int b = a--;
    print(a);	// 7
    print(b);	// 8
    

Приоритет арифметических операций

Одни операции имеют больший приоритет чем другие и поэтому выполняются вначале. Операции в порядке уменьшения приоритета:

++ (постфиксный инкремент), -- (постфиксный декремент)

++ (префиксный инкремент), -- (префиксный декремент)

* (умножение), / (деление), % (остаток от деления)

+ (сложение), - (вычитание)

Приоритет операций следует учитывать при выполнении набора арифметических выражений:

int a = 8;
int b = 7;
int c = a + 5 * ++b;      
print(c);	// 48

Вначале будет выполняться операция инкремента ++b, которая имеет больший приоритет - она увеличит значение переменной b и возвратит его в качестве результата. Затем выполняется умножение 5 * ++b, и только в последнюю очередь выполняется сложение a + 5 * ++b

Скобки позволяют переопределить порядок вычислений:

int a = 8;
int b = 7;
int c = (a + 5) * ++b;    
print(c);	// 104

Хотя операция сложения имеет меньший приоритет, но вначале будет выполняться именно сложение, а не умножение, так как операция сложения заключена в скобки.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850