Maison > développement back-end > C++ > le corps du texte

Pourquoi C Modulo renvoie-t-il des nombres négatifs ?

Susan Sarandon
Libérer: 2024-11-25 12:42:12
original
236 Les gens l'ont consulté

Why Does C   Modulo Return Negative Numbers?

Pourquoi C génère des nombres négatifs lors de l'utilisation de Modulo ?

Contrairement à Python, C génère des valeurs négatives lors de l'utilisation de modulo avec un diviseur positif. Cela se produit car l'opération est définie par l'implémentation en C selon la norme ISO/IEC 14882:2003(E) :

"Si les deux opérandes sont non négatifs, alors le reste est non négatif ; sinon, le signe du reste est défini par l'implémentation."

Cette définition permet des optimisations courantes dans les jeux d'instructions du processeur, où la division et le modulo sont effectués ensemble.

Le reste négatif assure la cohérence avec les règles suivantes :

  • Les quotients sont arrondis vers zéro pour la division entière.
  • L'équation du dividende (dividende = quotient * reste du diviseur) est satisfait par les résultats.

Cela signifie que lors de la division d'un nombre négatif par un nombre positif, le le quotient sera négatif (ou nul).

La justification de cette spécification inclut :

  • Efficacité et simplicité dans les jeux d'instructions du processeur.
  • Cohérence dans l'arrondi et le respect l'équation de division.
  • La préférence de C pour l'efficacité et la simplicité.
  • La compatibilité de C avec C.

Bien que le reste négatif puisse sembler contre-intuitif, il est une conséquence de la nature définie par l'implémentation du modulo en C . Il assure la cohérence avec la division entière et optimise les performances.

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