Поделиться через


Операторы умножения в C

Мультипликативные операторы выполняют операции умножения (*), деления (/) и вычисления остатка (%).

Синтаксис

  • мультипликативное-выражение:
    выражение-приведения

    мультипликативное-выражение * выражение-приведения

    мультипликативное-выражение / выражение-приведения

    мультипликативное-выражение % выражение-приведения

Операнды оператора вычисления остатка (%) должны быть целочисленными. Операторы умножения (*) и деления (/) могут принимать операнды целочисленного типа и операнды с плавающей запятой; типы операндов могут различаться.

Мультипликативные операторы выполняют обычные арифметические преобразования над операндами. После преобразования тип результата совпадает с типом операндов.

Примечание

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

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

Оператор

Описание

*

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

/

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

 

  • Согласно стандарту ANSI C, результат деления на 0 не определен. Во время компиляции или выполнения компилятор Microsoft C выдает ошибку.

 

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

 

  • Если один из операндов отрицательный, результатом операции может быть наибольшее целое число, меньшее или равное частному от деления, или наименьшее целое число, большее или равное частному от деления. Это определяется реализацией. (См. раздел "Для систем Microsoft" ниже.)

%

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

 

  • Если правый операнд равен нулю, результат будет неопределенным.

 

  • Если оба операнда положительные или не имеют знака, результат будет положительным.

 

  • Если один из операндов отрицательный и результат неточный, результат определяется реализацией. (См. раздел "Для систем Microsoft" ниже.)

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

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

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

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

Примеры

Для приведенных ниже примеров используются следующие объявления:

int i = 10, j = 3, n;
double x = 2.0, y;

В следующей инструкции используется оператор умножения.

y = x * i;

В этом примере x умножается на i и получается значение 20.0. Результат имеет тип double.

n = i / j;

В этом примере 10 делится на 3. Дробная часть результата отбрасывается и получается целое значение 3.

n = i % j;

В этой инструкции переменной n присваивается значение целочисленного остатка (1) от деления 10 на 3.

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

Знак остатка совпадает со знаком делимого. Например:

50 % -6 = 2
-50 % 6 = -2

В каждом случае значения 50 и 2 имеют один и тот же знак.

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

См. также

Ссылки

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