Operatory mnożenia i Operator modulo
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 modulo (%) ma bardziej rygorystyczne wymagania, ponieważ jego operandy muszą być typu całkowitoliczbowego. (Aby uzyskać resztę z dzielenia liczb zmiennopozycyjnych, należy użyć funkcji czasu wykonywania fmod.) Konwersje omówione w sekcji Konwersje arytmetyczne są stosowane do operandów, a wynik jest typu konwertowanego.
Operator mnożenia daje wynik mnożenia pierwszego operandu przez drugi.
Operator dzielenia daje wynik dzielenia pierwszego operandu przez drugi.
Operator modulo daje resztę uzyskaną z następującego wyrażenia, gdzie e1 jest pierwszym operandem, a e2 jest drugim: e1 – (e1 / e2) * e2, gdzie oba operandy są typu całkowitoliczbowego.
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.
KONIEC Specyficzne dla firmy Microsoft
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,666666666.Wynik takiego dzielenia liczb całkowitych to –3.
Relację między operatorami multiplikatywnymi określa tożsamość (e1 / e2) * e2 + e1 % e2 == e1.
Przykład
Następujący program pokazuje operatory multiplikatywne.Należy zauważyć, że oba operandy z 10 / 3 muszą być jawnie rzutowane na typ float, aby uniknąć obcinania, tak aby oba operandy przed dzieleniem były typu 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;
}
Zobacz też
Informacje
Wyrażenia z operatorami dwuargumentowymi