Maison >développement back-end >C++ >Pourquoi l'opérateur Modulo produit-il des résultats négatifs avec des nombres négatifs ?
L'opérateur modulo donne des valeurs négatives : une explication mathématique
L'opérateur modulo %, lorsqu'il est appliqué à des nombres négatifs, peut produire des résultats différents selon sur la mise en œuvre. Cela peut être déroutant, mais comprendre la définition mathématique de l'opérateur modulo peut faire la lumière sur ce comportement.
Selon la norme ISO14882:2011(e) 5.6-4, l'opérateur modulo renvoie le reste de la division du première expression par la seconde. Si le deuxième opérande est zéro, le comportement n'est pas défini. Pour les opérandes intégraux, le quotient est le quotient algébrique en excluant toute partie fractionnaire.
Pour illustrer cela, considérons les exemples suivants :
std::cout << (-7 % 3) << std::endl; // -1 std::cout << (7 % -3) << std::endl; // 1
(-7 % 3) = -1
( 7 % -3) = 1
A noter que dans les deux cas , le quotient algébrique est le même (-2). La différence dans le reste résulte du signe du reste défini par l'implémentation lorsque les deux opérandes sont de signes différents.
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!