Maison >développement back-end >C++ >Pourquoi l'opérateur C Modulo (%) renvoie-t-il parfois des résultats négatifs ?

Pourquoi l'opérateur C Modulo (%) renvoie-t-il parfois des résultats négatifs ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-23 19:25:11340parcourir

Why Does the C   Modulo Operator (%) Sometimes Return Negative Results?

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

Déclaration:
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