IHECinformaticien
Messages postés9Date d'inscriptionjeudi 19 février 2009StatutMembreDernière intervention29 mars 2009
-
29 mars 2009 à 01:38
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 2013
-
29 mars 2009 à 14:43
Bonsoir/Bonjour, dans le code source au dessous j'ai défini une union qui contient 3 variables: une de type entier, l'autre de type réel et la dernière de type caractère.
Pour chacun des membres de l'union j'ai lu la valeur correspondante au clavier ensuite j' ai affiché l'adresse du membre mais mon problème c'est que je n'ai pas sût comment afficher le contenu du membre. J'ai fait un essai mais ça n'a pas marché.Voici mon essai & merci infiniment.
#include<stdio.h>
void main()
{
union abc /* union qui s'appelle abc*/
{ int i;
float f;
char c;
};
union abc X; /* X variable de type union abc*/
printf("Donner un entier\n");
scanf("%d",&X.i);
printf("Donner un reel\n");
scanf("%f",&X.f);
printf("Donner un caractere\n");
scanf("%s",&X.c);
printf("l'adresse du membre entier est %d\n",&X.i);
printf("son contenu est %d\n",X.i);
printf("l'adresse du membre reel est %d\n",&X.f);
printf("son contenu est %f\n",X.f);
printf("l'adresse du membre entier est %d\n",&X.c);
printf("son contenu est %s\n",X.c); }
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 29 mars 2009 à 14:43
Salut,
Mêmes remarques que d'habitude, déclare ton union en dehors de toute
fonction et fait donc retourner un int a ta fonction main.
Ensuite tu devrais relire les cours sur le C car visiblement tu n'as rien compris au principe des unions. En gros, une union déclare plusieurs types sur la même zone mémoire. Deux conséquences directes :
- L'union a pour taille la taille du plus gros composant.
- La modification d'un seul composant modifie les autres.
Bref, je te laisse relire ce que j'ai mis et comprendre la bêtise que tu as fait.