Maison > développement back-end > C++ > Que se passe-t-il lorsque vous attribuez une valeur négative à une variable non signée en C ?

Que se passe-t-il lorsque vous attribuez une valeur négative à une variable non signée en C ?

Mary-Kate Olsen
Libérer: 2024-12-18 13:18:16
original
630 Les gens l'ont consulté

What Happens When You Assign a Negative Value to an Unsigned Variable in C  ?

Attribuer des valeurs négatives à des variables non signées : que se passe-t-il ?

En C, si vous essayez d'attribuer une valeur négative à une variable non signée, tels que :

unsigned int nVal = 0;
nVal = -5;
Copier après la connexion

le comportement peut être perplexe.

L'explication

Selon la section 4.7 conv.integral de la norme C :

"Si le type de destination n'est pas signé, le résultat la valeur est le plus petit entier non signé congru à l'entier source (modulo 2n où n est le nombre de bits utilisés pour représenter le type non signé)."

Dans la représentation en complément à deux (que la plupart des processeurs modernes utilisent), cela signifie qu'il n'y a pas de changement réel dans le modèle de bits s'il n'y a pas de troncature. . Le résultat est la valeur équivalente à (-5 232), ou 4294967291. En effet, la représentation en complément à deux de -5 est la même que la représentation au niveau du bit de 4294967291.

En bref, attribuer une valeur négative à une variable non signée n'entraîne pas de débordement ou d'exception. Au lieu de cela, il revient à la valeur positive non signée équivalente.

Remarque :

Bien que ce comportement soit bien défini en C , il n'est pas largement compris. Il est important d'être conscient de ce piège potentiel lorsque vous travaillez avec des variables non signées.

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