Afficher un message
Vieux 27/02/2008, 18h29   #3
Anthony Fleury
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Comportement indéfini ou pas ?

David Côme a écrit :
> Bonjour à tous.


Bonjour,

> Est ce que ce code à un comportement indéfini ?
>
> //iostream est inclue , ...
> int a; //(1)
> cout<< a; // (2)
>
> Pour ma part:
> Je pense que la valeur de a est indéfinie car (1) créer une variable sur
> la pile sans lui affecter de valeur.
> Elle prend donc la valeur de ce qui se trouvait avant à cette place.
> Il n'y a pas de moyen de connaitre cette valeur. La valeure de a est
> indéfini même si certain compilo réalisé une affectation par défaut
> (je pense à VC++ en mode débug , on peut confirmer ?)
>
> Par contre la 2eme ligne, elle a un comportement totalement défini.Elle
> va afficher la valeur de a, qui peut être n'importe quoi.
>
> Suis-je dans le vrai ?


Si on considère la plupart des implémentations connues, ça donnera en
effet un affichage d'une valeur aléatoire et en effet le comportement
peu changer en mode debug selon les compilateurs.

Cependant, au regard de la norme, ce code est indéfini car accède à une
variable non initialisée (en considérant (1) automatique).

Entre autre, a peut très bien contenir une valeur "invalide" pour le
système ("trap value") qui ferait remarquer au-dit système que la
variable utilisée ne l'est pas d'une manière conforme.

Anthony
  Réponse avec citation
 
Page generated in 0,05307 seconds with 9 queries