91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于位域在結構體的應用

發布時間:2020-07-12 19:22:10 來源:網絡 閱讀:538 作者:銀河星君 欄目:編程語言

關于位域在結構體的應用主要要注意內存對齊規則的理解和空域的理解
使用位域的主要目的是壓縮存儲,其大致規則為:
1)如果相鄰位域字段的類型相同,且其位寬之和小于類型的sizeof大小,則后面的字段將緊鄰前一個字段存儲,直到不能容納為止;
2)如果相鄰位域字段的類型相同,但其位寬之和大于類型的sizeof大小,則后面的字段將從新的存儲單元開始,其偏移量為其類型大小的整數倍;
3)如果相鄰的位域字段的類型不同,則各編譯器的具體實現有差異,VC6采取不壓縮方式,Dev-C++采取壓縮方式;
4)如果位域字段之間穿插著非位域字段,則不進行壓縮;
5)整個結構體的總大小為最寬基本類型成員大小的整數倍。
例如:

#include <stdio.h>
int main()
{
    union
    {
        struct
        {
            unsigned short s1:3;
            unsigned short s2:3;
            unsigned short s3:3;
        }x;
        char c;
    }v;
    v.c=100;
    printf("sizeof(v)=%d\n",sizeof(v));
    printf("s1=%d\n",v.x.s1);
    printf("s2=%d\n",v.x.s2);
    printf("s3=%d\n",v.x.s3);
    return 0;
}

分析:100的二進制:0110 0100,結構體中s1,s2,s3共9位,則占用2直接,故sizeof(v)=2;對應的s1三位二進制100,s1=4;s2三位二進制100,s2=4;s3三位二進制001,s3=1。

結果:

關于位域在結構體的應用


再例如:

#include <stdio.h>
int main()
{
    union
    {
        struct
        {
            unsigned short s1:3;
            unsigned short s2:3;
            unsigned short s3:3;
            unsigned short s4:7;
        }x;
        char c;
    }v;
    v.c=100;
    printf("sizeof(v)=%d\n",sizeof(v));
    printf("s1=%d\n",v.x.s1);
    printf("s2=%d\n",v.x.s2);
    printf("s3=%d\n",v.x.s3);
    printf("s4=%d\n",v.x.s4);
    return 0;
}

結果:

關于位域在結構體的應用

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

理塘县| 阿克| 阿拉善右旗| 确山县| 泽州县| 朝阳县| 上栗县| 九龙坡区| 延安市| 陆河县| 丹江口市| 鹤峰县| 邮箱| 萍乡市| 平顺县| 四会市| 故城县| 安仁县| 阆中市| 永清县| 武平县| 舞钢市| 安顺市| 马尔康县| 体育| 革吉县| 山丹县| 子长县| 托克逊县| 南和县| 正定县| 手机| 新龙县| 云梦县| 海宁市| 武强县| 老河口市| 左云县| 兰考县| 英吉沙县| 靖宇县|