Maison >développement back-end >C++ >Pourquoi l'opérateur C Modulo (%) renvoie-t-il parfois des résultats négatifs ?
Évaluation du module : comprendre les résultats négatifs
En C , l'opérateur modulo (%) est connu pour donner des valeurs négatives dans certaines conditions. Cela peut être déroutant, surtout lorsque ces opérations renvoient des résultats différents :
std::cout << (-7 % 3) << std::endl; // -1 std::cout << (7 % -3) << std::endl; // 1
Pour clarifier ce comportement, nous nous référons à la norme ISO C (ISO14882:2011). L'opérateur modulo renvoie le reste de la division du premier opérande (numérateur) par le deuxième opérande (dénominateur).
Pour la première opération, (-7) est divisé par 3, ce qui donne un quotient de - 2 avec un reste de -1. Par conséquent, (-7 % 3) est égal à -1.
Pour la deuxième opération, 7 est divisé par -3, ce qui donne également un quotient de -2. Cependant, comme le dénominateur est négatif, le signe du reste est défini par l'implémentation. Dans ce cas, l'implémentation choisit de renvoyer un reste positif, qui est 1.
Il est important de noter que le comportement de l'opérateur modulo peut différer en fonction de la plate-forme spécifique et de l'implémentation. En général, il est recommandé de gérer les valeurs négatives avec soin et de considérer le potentiel d'obtention de résultats différents lorsque vous travaillez avec l'opérateur modulo.
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!