Opérateurs de multiplication et opérateur modulo

Syntaxe

expression * expression
expression / expression
expression % expression

Notes

Les opérateurs de multiplication sont :

  • Multiplication (*)

  • Division (/)

  • Module (reste d’une division) (%)

Ces opérateurs binaires ont une associativité de droite à gauche.

Les opérateurs de multiplication prennent des opérandes de types arithmétiques. L’opérateur modulo (%) a des exigences plus strictes dans la mesure où ses opérandes doivent être de type intégral. (Pour obtenir le reste d’une division à virgule flottante, utilisez la fonction runtime, fmod.) Les conversions traitées dans Conversions standard sont appliquées aux opérandes, et le résultat correspond au type converti.

L'opérateur de multiplication montre le résultat de la multiplication du premier opérande par le second.

L’opérateur de division montre le résultat de la division du premier opérande par le second.

L’opérateur modulo génère le reste donné par l’expression suivante, où e1 est le premier opérande et e2 est le second : e1 - (e1 / e2) * e2, où les deux opérandes sont de types intégraux.

La division par 0 dans une division ou une expression de modulo est éliminée et provoque une erreur d'exécution. Par conséquent, les expressions suivantes génèrent des résultats indéterminés et erronés :

i % 0
f / 0.0

Si les deux opérandes pour une expression de multiplication, de division ou de modulo ont le même signe, le résultat est positif. Sinon, le résultat est négative. Le résultat du signe d'une opération modulo est défini par l'implémentation.

Remarque

Étant donné que les conversions exécutées par les opérateurs de multiplication ne fournissent pas de conditions de dépassement de capacité positif ou de dépassement de capacité négatif, les informations peuvent être perdues si le résultat d'une opération de multiplication ne peut pas être représenté dans le type des opérandes après conversion.

Section spécifique à Microsoft

Dans Microsoft C++, le résultat d'une expression de modulo est toujours le même que le signe du premier opérande.

FIN de la section spécifique à Microsoft

Si la division calculée de deux entiers est incorrecte et qu'un seul opérande est négatif, le résultat est le plus grand entier (en amplitude, sans tenir compte du signe) qui est inférieur à la valeur exacte que l'opérateur de division produirait. Par exemple, la valeur calculée de -11 / 3 est -3,666666666. Le résultat de cette division de type intégral est -3.

La relation entre les opérateurs de multiplication est donnée par l’identité (e1 / e2) * e2 + e1 % e2 == e1.

Exemple

Le programme suivant montre les opérateurs de multiplication. Notez que l’un ou l’autre des opérandes de 10 / 3 doit être explicitement casté en type float pour éviter toute troncation, afin que les deux opérandes soient de type float avant la division.

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

Voir aussi

Expressions avec opérateurs binaires
Opérateurs intégrés, priorité et associativité C++
Opérateurs de multiplication C