Multiplikativní operátory a operátor numerického zbytku
expression * expression
expression / expression
expression % expression
Poznámky
Operátory násobení jsou:
Násobení (*)
Dělení (/)
Zbytek (po dělení) (%)
Tyto binární operátory mají asociativitu zleva doprava.
Operátory násobení vezmou operandy aritmetických typů.Operátor zbytku (%) má přísnější požadavky v tom smyslu, že jeho operandy musí být integrálního typu. (Chcete-li získat zbytek po dělení s pohyblivou čárkou, použijte funkci run-time fmod.) Převody uvedené v tématu Aritmetické převody jsou použity na operandy a výsledek je v převedeném typu.
Operátor násobení dává výsledek vynásobení prvního operandu druhým.
Operátor dělení dává výsledek vydělení prvního operandu druhým.
Operátor zbytku vrací zbytek daný následujícím výrazem, kde e1 je první operand a e2 je druhý: e1 – (e1 / e2) * e2, kde jsou oba operandy integrální typy.
Dělení nulou ve výrazu dělení nebo zbytku není definováno a způsobí chybu modulu run-time.Následující výrazy proto způsobí nedefinované chybné výsledky:
i % 0
f / 0.0
Pokud jsou oba operandy na výraz násobení, dělení, nebo zbytku mají stejné znaménko, výsledek je kladný.Jinak je výsledek záporný.Výsledek znaménka operace modulus je definován implementací.
[!POZNÁMKA]
Vzhledem k tomu, že převody prováděné operátory násobení nepočítají s podmínkami přetečení nebo podtečení, informace se mohou ztratit, pokud výsledek operace násobení nelze reprezentovat v typu operandu po převodu.
Specifické pro Microsoft
V programu Microsoft C++ výsledek výrazu zbytku je vždy stejný jako znaménko prvního operandu.
END Specifické pro Microsoft
Pokud je vypočítané dělení dvou celých čísel nepřesné a pouze jeden operand je záporný, výsledkem je největší celé číslo (v rozsahu bez ohledu na znaménko) menší než přesná hodnota, kterou by byla výsledkem operace dělení.Například vypočítaná hodnota –11 / 3 je –3,666666666.Výsledek tohoto dělení celých čísel je –3.
Vztah mezi operátory násobení je dán identitou (e1 / e2) * e2 + e1 % e2 == e1.
Příklad
Následující program ukazuje operátory násobení.Všimněte si, že každý operand 10 / 3 musí být explicitně přetypován na typ float, aby se zabránilo zkrácení, takže oba operandy jsou před dělením 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;
}