Maison > développement back-end > C++ > Pourquoi l'opérateur Modulo (%) produit-il des résultats différents avec des nombres négatifs ?

Pourquoi l'opérateur Modulo (%) produit-il des résultats différents avec des nombres négatifs ?

Mary-Kate Olsen
Libérer: 2024-12-30 18:15:11
original
797 Les gens l'ont consulté

Why Does the Modulo Operator (%) Produce Different Results with Negative Numbers?

Valeurs restantes négatives dans l'opération modulo

Lors de l'exécution d'opérations modulo, où un opérande est négatif, des résultats inattendus peuvent survenir. Cet article explore pourquoi des opérations telles que (-7 % 3) et (7 % -3) produisent des résultats apparemment incohérents de -1 et 1, respectivement.

Selon la norme ISO14882 :2011, l'opérateur modulo (% ) fournit le reste après avoir divisé le premier opérande par le second. Alors que diviser des entiers implique généralement de supprimer la partie fractionnaire, l'opérateur modulo considère également les signes des opérandes.

Dans le cas de (-7 % 3), le résultat de -7 / 3 est -2. En multipliant -2 par 3, on obtient -6, ce qui indique que le reste est -1. Par conséquent, (-7 % -3) = -1.

De même, pour (7 % -3), 7/-3 donne -2. En multipliant -2 par -3, on obtient 6, ce qui donne le reste 1. Ainsi, (7 % -3) = 1.

Il est important de noter que l'opération modulo présente un comportement défini par l'implémentation lorsque le résultat est négatif. . Bien que certaines implémentations puissent conserver le signe négatif, la norme ISO14882:2011 ne l'applique plus. Par conséquent, le signe négatif (-7 % 3) dépend du système.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal