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
Mary-Kate Olsenoriginal
2024-12-30 18:15:11799parcourir

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!

Déclaration:
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