Share via


Operatori di moltiplicazione e operatori modulo

Sintassi

expression * expression
expression / expression
expression % expression

Osservazioni:

Gli operatori moltiplicativi sono:

  • Moltiplicazione (*)

  • Divisione (/)

  • Modulo (resto dalla divisione) (%)

Questi operatori binari hanno un'associatività da sinistra a destra.

Gli operatori moltiplicativi accettano gli operandi di tipi aritmetici. L'operatore modulo (%) ha un requisito più rigoroso in quanto gli operandi devono essere di tipo integrale. Per ottenere il resto di una divisione a virgola mobile, usare la funzione di runtime fmod. Le conversioni descritte nelle conversioni standard vengono applicate agli operandi e il risultato è del tipo convertito.

L'operatore di moltiplicazione produce il risultato moltiplicando il primo operando per il secondo.

L'operatore di divisione produce il risultato dividendo il primo operando per il secondo.

L'operatore modulo restituisce il resto dato dall'espressione seguente, dove e1 è il primo operando ed e2 è il secondo: e1 - (e1 / e2) * e2, dove entrambi gli operandi sono di tipi integrali.

La divisione per 0 in una divisione o in un'espressione di modulo non è definita e provoca un errore di runtime. Pertanto, le espressioni seguenti generano risultati errati non definiti:

i % 0
f / 0.0

Se entrambi gli operandi in una moltiplicazione, divisione o espressione di modulo hanno lo stesso segno, il risultato è positivo. In caso contrario, il risultato sarà negativo. Il risultato del segno di un'operazione modulo è definito dall'implementazione.

Nota

Poiché le conversioni eseguite dagli operatori di moltiplicazione non consentono condizioni di overflow o di underflow, le informazioni potrebbero essere perse se il risultato di un'operazione di moltiplicazione non può essere rappresentato nel tipo degli operandi in seguito alla conversione.

Sezione specifica Microsoft

In Microsoft C++, il risultato di un'espressione di modulo è sempre uguale al segno del primo operando.

Fine sezione specifica Microsoft

Se la divisione calcolata di due interi non è esatta e un solo operando è negativo, il risultato è l'intero più grande (in termini di grandezza, non considerando il segno) che è minore del valore esatto che produrrebbe l'operazione di divisione. Ad esempio, il valore calcolato di -11 / 3 è -3.666666666. Il risultato di tale divisione integrale è -3.

La relazione tra gli operatori moltiplicativi viene data dall'identità (e1 / e2) * e2 + e1 % e2 == e1.

Esempio

Nel programma seguente vengono illustrati gli operatori moltiplicativi. Si noti che uno degli operandi di deve essere eseguito in modo esplicito al tipo float per evitare il troncamento in modo che entrambi gli operandi siano di tipo float prima della 10 / 3 divisione.

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

Vedi anche

Espressioni con operatori binari
Operatori C++, precedenza e associazione
Operatori di moltiplicazione C