Maison >développement back-end >C++ >Comment l'opérateur Modulo gère-t-il les nombres négatifs ?
Comprendre le comportement de l'opérateur modulo avec des valeurs négatives
L'opérateur modulo est connu pour donner des résultats différents lorsqu'il est utilisé avec des opérandes négatifs. Pour approfondir cela, considérons les opérations suivantes :
std::cout << (-7 % 3) << std::endl; // Output: -1 std::cout << (7 % -3) << std::endl; // Output: 1
Justification selon la norme ISO
Selon ISO14882:2011(e) 5.6-4, l'opérateur modulo (%) donne le reste de la division de la première expression par la seconde. Cependant, pour les opérandes intégraux comme dans notre cas, l'opérateur de division (/) effectue une division entière, en ignorant toute partie fractionnaire.
Décomposition mathématique
Décomposons les calculs pour plus de clarté :
Défini par la mise en œuvre Comportement
Il est important de noter que lorsque les deux opérandes sont négatifs, le signe du reste est défini par l'implémentation. Cependant, depuis ISO14882:2011(e), le comportement n'est plus explicitement indiqué comme dans son prédécesseur, ISO14882:2003(e).
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!