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 :
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 :
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!