Бөлісу құралы:


Операторы умножения и оператор модуля

Синтаксис

expression * expression
expression / expression
expression % expression

Замечания

Ниже перечислены мультипликативные операторы.

  • Умножение (*)

  • Деление (/)

  • Модуль (оставшаяся часть от деления) (%)

Эти бинарные операторы имеют ассоциативность слева направо.

Мультипликативные операторы принимают операнды арифметических типов. Оператор модуля (%) имеет более строгое требование в том, что его операнды должны иметь целочисленный тип. (Чтобы получить оставшуюся часть деления с плавающей запятой, используйте функцию времени выполнения fmod.) Преобразования, описанные в стандартных преобразованиях, применяются к операндам, а результатом является преобразованный тип.

Оператор умножения возвращает результат умножения первого операнда на второй.

Оператор деления возвращает результат деления первого операнда на второй.

Оператор modulus дает оставшуюся часть, заданную следующим выражением, где e1 является первым операндом и e2 является вторым: e1 - (e1 / e2) * e2, где оба операнда являются целочисленными типами.

Деление на 0 в выражении деления или модуля не определено и вызывает ошибку времени выполнения. Поэтому следующие выражения создают неопределенные ошибочные результаты.

i % 0
f / 0.0

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

Примечание.

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

Блок, относящийся только к системам Майкрософт

В Microsoft C++ знак результата выражения модуля всегда совпадает со знаком первого операнда.

Завершение блока, относящегося только к системам Майкрософт

Если значение, полученное при делении двух целых чисел, неточное и только один операнд является отрицательным, результатом будет наибольшее целое число (по величине без учета знака), которое меньше точного значения, которое было бы получено при операции деления. Например, вычисляемое значение -11/3 равно -3.66666666666. Результатом этого целого деления является -3.

Связь между мультипликативными операторами определяется идентификатором (e1 / e2) * e2 + e1 % e2 e2 == e1 e1 e1.

Пример

В следующей программе показаны мультипликативные операторы. Обратите внимание, что любой 10 / 3 операнды должны быть явно приведение к типу float , чтобы избежать усечения, чтобы оба операнда были типа float перед делением.

// expre_Multiplicative_Operators.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main() {
   int x = 3, y = 6, z = 10;
   cout  << "3 * 6 is " << x * y << endl
         << "6 / 3 is " << y / x << endl
         << "10 % 3 is " << z % x << endl
         << "10 / 3 is " << (float) z / x << endl;
}

См. также

Выражения с бинарными операторами
Операторы C++, приоритет и ассоциативность
Операторы умножения в C