Maison > développement back-end > C++ > Pourquoi `int x = x;` entraîne-t-il un comportement non défini en C ?

Pourquoi `int x = x;` entraîne-t-il un comportement non défini en C ?

Mary-Kate Olsen
Libérer: 2024-12-19 11:51:16
original
141 Les gens l'ont consulté

Why Does `int x = x;` Result in Undefined Behavior in C  ?

Conversion Lvalue en Rvalue et comportement non défini en int x = x ;

Contexte :

Le code C int x = x; initialise une variable x avec sa propre valeur, mais cette valeur n'est pas initialisée pour une variable automatique. Par conséquent, la valeur est indéterminée et un comportement indéfini peut en résulter.

Conversion Lvalue en Rvalue :

Une conversion lvalue en rvalue transforme une lvalue (référence ou objet avec une adresse) en une prvalue (valeur sans adresse). La norme C indique que l'exécution de cette conversion sur une valeur non initialisée entraîne un comportement non défini.

La main droite x subit-elle une conversion de valeur L en valeur R ?

Oui . Bien qu'il se trouve du côté droit de l'affectation, x est toujours une lvalue. L'opérateur d'affectation nécessite une lvalue sur le côté gauche (là où la valeur est stockée) et une prvalue sur le côté droit (la source de la valeur).

Conclusion :

Par conséquent, le x de droite subit une conversion lvalue en rvalue, et comme il fait référence à une valeur non initialisée, le code fourni a indéfini comportement.

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