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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour