Udostępnij za pośrednictwem


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

Operatory języka C++

Operatory, pierwszeństwo i kojarzenie języka C++

Operatory mnożenia języka C