Operatory mnożenia i Operator modulo

Składnia

expression * expression
expression / expression
expression % expression

Uwagi

Operatory multiplikatywne to:

  • Mnożenie (*)

  • Dzielenie (/)

  • Modulo (reszta z dzielenia) (%)

Te operatory dwuargumentowe mają łączność od lewej do prawej.

Operatory multiplikatywne przyjmują operandy typów arytmetycznych. Operator modulu (%) ma ostrzejsze wymaganie, aby jego operandy muszą być typu całkowitego. (Aby uzyskać pozostałą część dzielenia zmiennoprzecinkowego, użyj funkcji czasu wykonywania, fmod). Konwersje objęte konwersjami standardowymi są stosowane do operandów , a wynikiem jest przekonwertowany typ.

Operator mnożenia daje wynik mnożenia pierwszego operandu przez drugi.

Operator dzielenia daje wynik dzielenia pierwszego operandu przez drugi.

Operator modulus zwraca resztę podaną przez następujące wyrażenie, gdzie e1 jest pierwszym operandem, a e2 jest drugim: e1 - (e1 / e2) * e2, gdzie oba operandy są typami całkowitymi.

Dzielenie przez 0 w wyrażeniu dzielenia lub modulo jest nieokreślone i powoduje błąd w czasie wykonywania. Dlatego następujące wyrażenia generują nieokreślone, błędne wyniki:

i % 0
f / 0.0

Jeśli oba operandy wyrażenia mnożenia, dzielenia lub modulo mają taki sam znak, wynik jest dodatni. W przeciwnym razie wynik jest ujemny. Znak wyniku operacji modulo zależy od implementacji.

Uwaga

Ponieważ konwersje wykonywane przez operatory multiplikatywne nie przewidują warunków przepełnienia lub niedomiaru, informacje mogą zostać utracone, jeśli wynik operacji multiplikatywnej nie może być przedstawiony w typie operandów po konwersji.

Specyficzne dla firmy Microsoft

W Microsoft C++, wynik wyrażenia modulo jest zawsze taki sam, jak znak pierwszego operandu.

END Microsoft Specific

Jeśli obliczone dzielenie dwóch liczb całkowitych jest niedokładne i tylko jeden argument jest liczbą ujemną, wynik jest największą liczbą całkowitą (w wielkości, pomijając znak), mniejszą niż dokładna wartość, którą dałaby operacja dzielenia. Na przykład obliczona wartość -11 / 3 to -3,666666666666. Wynikiem tego podziału całkowitego jest -3.

Relacja między operatorami mnożenia jest podawana przez tożsamość (e1 / e2) * e2 + e1 % e2 e2 e1 == e1.

Przykład

Następujący program pokazuje operatory multiplikatywne. Należy pamiętać, że jeden z operandów 10 / 3 musi być jawnie rzutowane, aby float uniknąć obcięcia, aby oba operandy są typu float przed podziałem.

// 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;
}

Zobacz też

Wyrażenia z operatorami dwuargumentowymi
Wbudowane operatory, pierwszeństwo i kojarzenie języka C++
Operatory mnożenia języka C