Maison  >  Questions et réponses  >  le corps du texte

c++ - A quoi sert l'union en langage C?

RT, la dernière affectation de cette structure écrasera l'affectation précédente, donc je suis curieux de savoir dans quels scénarios ce genre de chose est généralement utilisé ?

世界只因有你世界只因有你2658 Il y a quelques jours996

répondre à tous(5)je répondrai

  • 漂亮男人

    漂亮男人2017-06-12 09:26:44

    Économisez la mémoire et facilitez l'accès aux octets hauts et bas

    répondre
    0
  • 某草草

    某草草2017-06-12 09:26:44

    Le but initial était d'économiser de la mémoire. Si vous y réfléchissez bien, le langage C n'a commencé à être utilisé à grande échelle que dans les années 1980, et la mémoire était très précieuse à cette époque.

    répondre
    0
  • ringa_lee

    ringa_lee2017-06-12 09:26:44

    Peut fournir différentes interfaces d'accès à la même donnée. . .
    Par exemple, lorsque vous faisiez du travail embarqué, vous pourriez écrire comme ceci :

    // 没有字节对齐,或者字节对齐为1,int 占4字节
    typedef union {
        unsigined int num;
        struct {
            unsigned char byte0;
            unsigned char byte1;
            unsigned char byte2;
            unsigned char byte3;
        } bytes;
    } Demo;

    Cependant, il n'est pas très concis d'écrire de cette façon, et l'efficacité de ce code sur PC est la même que la récupération directe de chaque octet par décalage de bits. Juste un exemple, ne vous y attardez pas trop.

    répondre
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-12 09:26:44

    Généralement utilisé pour déterminer les grandes et petites extrémités

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-12 09:26:44

    Il est souvent utilisé dans le développement embarqué. Permettez-moi de donner ici un exemple similaire à celui de @zonxin ci-dessus

    .
    typedef struct __regular_descriptor_4_high {
        union {
            U32 value;
            struct {
                U32 raid_id0    : 4;
                U32 raid_cmd0   : 4;
                U32 raid_id1    : 4;
                U32 raid_cmd1   : 4;
                U32 raid_id2    : 4;
                U32 raid_cmd2   : 4;
                U32 raid_id3    : 4;
                U32 raid_cmd3   : 4;
            } reg_des_bit;   
        } u; 
    } reg_des_4_high;

    Pour lire l'intégralité du registre, vous pouvez lire la valeur. Pour écrire différents fichiers de bits, utilisez reg_des_bit pour écrire.

    répondre
    0
  • Annulerrépondre