Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1219 connectés 

  FORUM HardWare.fr
  Programmation
  C

  rappel sur une union ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

rappel sur une union ?

n°439853
o'gure
Multi grognon de B_L
Posté le 26-06-2003 à 10:03:27  profilanswer
 

Bonjour !
Je suis en train de lire du code C et j ai un oubli sur ce que c 'est exactement une union !
Quelqu un pourrait il la definir precisement ?
 
MErci

mood
Publicité
Posté le 26-06-2003 à 10:03:27  profilanswer
 

n°439855
skeye
Posté le 26-06-2003 à 10:07:38  profilanswer
 
n°439857
LetoII
Le dormeur doit se réveiller
Posté le 26-06-2003 à 10:08:35  profilanswer
 

Une union te permet de stocker plusieurs types de donnée dans une même variable.
 
Par exemple:

Code :
  1. union toto
  2. {
  3.   char c;
  4.   int  i;
  5. } x;


 
Te permet de stocher un char ou un int dans x.


---------------
Le Tyran
n°439861
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 26-06-2003 à 10:10:25  profilanswer
 

une union est une zone mémoire qui ne peut contenir qu'une seule variable à la fois.
 
exemple :
 

Code :
  1. union test
  2. {
  3.    int entier;
  4.    float flottant;
  5. } toto;


 
tu ne pourras utiliser qu'un seul champ à la fois de cette union. ainsi, tu ne pourras jamais écrire :
 

Code :
  1. toto.entier=4;
  2. toto.flottant = 4.0;


 
la taille d'une union correspond à la taille de son plus grand champ


Message édité par Harkonnen le 26-06-2003 à 10:11:17

---------------
J'ai un string dans l'array (Paris Hilton)
n°439865
o'gure
Multi grognon de B_L
Posté le 26-06-2003 à 10:12:32  profilanswer
 

Pour du service rapide c est du service rapide
Merci ca repond pile poil a ma question :hello:  

n°440036
theshockwa​ve
I work at a firm named Koslow
Posté le 26-06-2003 à 11:56:31  profilanswer
 

Harkonnen a écrit :


tu ne pourras utiliser qu'un seul champ à la fois de cette union. ainsi, tu ne pourras jamais écrire :
 

Code :
  1. toto.entier=4;
  2. toto.flottant = 4.0;




 
:heink: tu peux préciser STP ?


---------------
last.fm
n°440041
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 26-06-2003 à 11:59:48  profilanswer
 

theShOcKwAvE a écrit :


 
:heink: tu peux préciser STP ?


ben dans mon exemple, quand tu affecteras la valeur 4.0 à toto.flottant, la variable toto.entier n'existera plus et sera écrasée par toto.flottant [:sinclaire]

n°440051
theshockwa​ve
I work at a firm named Koslow
Posté le 26-06-2003 à 12:04:09  profilanswer
 

Harkonnen a écrit :


ben dans mon exemple, quand tu affecteras la valeur 4.0 à toto.flottant, la variable toto.entier n'existera plus et sera écrasée par toto.flottant [:sinclaire]


 
ouais, ce sera écrasé, mais tu as le droit de le faire quoi ... C'est juste qu'il faut bien faire attention à la manière dont on s'en sert ...
 
EDIT : et encore ... Ton int, il aura une valeur à la con, mais il sera utilisable ...


Message édité par theshockwave le 26-06-2003 à 12:04:58

---------------
last.fm
n°440057
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 26-06-2003 à 12:07:39  profilanswer
 

theShOcKwAvE a écrit :


 
ouais, ce sera écrasé, mais tu as le droit de le faire quoi ... C'est juste qu'il faut bien faire attention à la manière dont on s'en sert ...
 
EDIT : et encore ... Ton int, il aura une valeur à la con, mais il sera utilisable ...


oui, j'ai le droit de le faire, mais c'est le principe de l'union : utiliser une seule variable à la fois
en analogie objet, on pourrait comparer ça à la surcharge : tu surcharges une variable

n°440110
LetoII
Le dormeur doit se réveiller
Posté le 26-06-2003 à 12:41:03  profilanswer
 

Harkonnen a écrit :


oui, j'ai le droit de le faire, mais c'est le principe de l'union : utiliser une seule variable à la fois
en analogie objet, on pourrait comparer ça à la surcharge : tu surcharges une variable


 
C plus comparable au polymorphisme


---------------
Le Tyran
mood
Publicité
Posté le 26-06-2003 à 12:41:03  profilanswer
 

n°440127
theshockwa​ve
I work at a firm named Koslow
Posté le 26-06-2003 à 12:54:00  profilanswer
 

Code :
  1. typedef struct {
  2.   union {
  3.     struct {
  4.       unsigned b : 5;
  5.       unsigned g : 5;
  6.       unsigned r : 5;
  7.     };
  8.     unsigned rgb : 15;
  9.   };
  10.   unsigned a : 1;
  11. } SPixel5551;


 
[:pitouxm]
 
une petite union où on peut avoir besoin de se servir des 2, car les données se recouvrent sans se gêner ... Ca permet 2 utilisations qui proposent chacune leur facilité, suivant les cas ...
 
Edit : évidemment, ca perd son intérêt si on ne peut pas utiliser d'union et de structures anonymes ....


Message édité par theshockwave le 26-06-2003 à 12:55:11

---------------
last.fm
n°440203
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 26-06-2003 à 13:51:59  profilanswer
 

LetoII a écrit :


 
C plus comparable au polymorphisme

très juste, étant donné qu'une seule instance existe en mémoire à l'instant T :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  rappel sur une union ?

 

Sujets relatifs
[MYSQL] La fonction UNION[SQL] La commande UNION... Pb :(
Utilisation d'une union : problemeUn petit rappel svp : comment installer easyphp en local... ?
[C] Problème avec union REGS et C++ Builder 5 ![Access 97] : Creer une table à partir d'une requete Union
[Général] Petit rappel 
Plus de sujets relatifs à : rappel sur une union ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR