Maison > développement back-end > C++ > Le dépassement d'entier signé en C a-t-il toujours un comportement indéfini ?

Le dépassement d'entier signé en C a-t-il toujours un comportement indéfini ?

Linda Hamilton
Libérer: 2024-12-25 01:18:25
original
688 Les gens l'ont consulté

Is Signed Integer Overflow in C   Still Undefined Behavior?

Dépassement d'entier signé en C : comportement toujours non défini

Comme souligné dans la documentation C 11 cstdint, les types d'entiers signés tels que int8_t, int16_t , int32_t et int64_t utilisent le complément à 2 pour les valeurs négatives valeurs. Cela a soulevé la question : cela implique-t-il que le débordement dans ces types n'est plus considéré comme un comportement indéfini ?

Non, le débordement de ces types reste un comportement indéfini en C .

Selon le paragraphe 5/4 de la norme C 11, toute expression dont le résultat n'est pas mathématiquement défini ou se situe en dehors de la plage représentable du type entraîne un résultat indéfini. comportement.

Bien que int8_t, int16_t, int32_t et int64_t utilisent le complément à 2, cela n'implique pas que l'arithmétique modulo 2^n est appliquée. La norme déclare explicitement que :

"Le résultat d'une opération arithmétique non signée est toujours 'mathématiquement défini', et le résultat est toujours dans la plage représentable ; par conséquent, 5/4 ne s'applique pas."

Par conséquent, l'arithmétique non signée suit les lois de l'arithmétique modulo 2^n, et le débordement n'est pas un comportement indéfini. Cependant, pour l'arithmétique signée, le débordement reste un comportement indéfini, quelle que soit la représentation sous-jacente.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal