<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. C語言位域的使用與注意事項解析

    時間:2025-07-26 04:46:10 C語言

    C語言位域的使用與注意事項解析

      C語言的位域是什么呢?該怎么使用呢?下面一起來看看C語言中位域的使用與注意事項解析吧!或許你就了解了。
      位域的定義
      有些信息在存儲時,并不需要占用一個完整的字節, 而只需占幾個或一個二進制位。例如在存放一個開關量時,只有0和1 兩種狀態, 用一位二進位即可。為了節省存儲空間,并使處理簡便,C語言又提供了一種數據結構,稱為“位域”或“位段”。所謂“位域”是把一個字節中的二進位劃分為幾個不同的區域,并說明每個區域的位數。每個域有一個域名,允許在程序中按域名進行操作。 這樣就可以把幾 個不同的對象用一個字節的二進制位域來表示。
      位域的定義和位域變量的說明位域定義與結構定義相仿,其形式為:
      ?
      struct 位域結構名
      { 位域列表 };
      eg:struct weiyu {
      int a:2;
      int b:5;
      int  :5;/pic/div>
      int c:3;
      }
      位域雖然簡單好用,但使用時需要注意:
      1) 如果相鄰位域字段的類型相同,且其位寬之和小于類型的sizeof大小,則后面的字段將緊鄰前一個字段存儲,直到不能容納為止;2) 如果相鄰位域字段的類型相同,但其位寬之和大于類型的sizeof大小,則后面的字段將從新的存儲單元開始,其偏移量為其類型大小的整數倍;3) 整個結構體的總大小為最寬基本類型成員大小的整數倍。
      4) 如果相鄰的位域字段的類型不同,則各編譯器的具體實現有差異,VC6采取不壓縮方式,Dev-C++采取壓縮方式;5) 如果位域字段之間穿插著非位域字段,則不進行壓縮;(不針對所有的編譯器)注意:4 ,5跟編譯器有較大的關系,使用時要慎重,盡量避免。
      ?
      #include "stdio.h"
      void main(int argn ,char *argv)
      {
      struct   test {
      unsigned a:10;
      unsigned b:10;
      unsigned c:6;
      unsigned :2;/pic/div>
      unsigned d:4;
      }data,*pData;
      data.a=0x177;
      data.b=0x111;
      data.c=0x7;
      data.d=0x8;
      pData=&data;
      printf("data.a=%x data.b= %x data.c=%x data.d=%xn",pData->a,pData->b,pData->c,pData->d);/pic/pic/div>
      char c:5;
      char d:5;
      char e:5;
      }len;
      printf("sizeof(len)=%dn",sizeof(len));   /pic/div>
      char d:3;
      char c:2;
      char e:7;
      }len1;
      printf("sizeof(len1) =%dn",sizeof(len1));  /pic/div>
      char b:7;
      long d:20; /pic/div>
      char e:4;
      }len2;
      printf("sizeof(len2)=%dn",sizeof(len2)); /pic/div>
      char b:7;
      long d:30;
      char e:4;
      }len3;
      printf("sizeof(len3)=%dn",sizeof(len3));/pic/div>
     

    【C語言位域的使用與注意事項解析】相關文章:

    C語言位操作是11-26

    C語言的位運算08-22

    C語言作用域入門學習11-26

    C語言位運算12-28

    C語言題目及解析08-08

    C語言的sizeo解析02-26

    c語言解析xml02-19

    C語言for循環的使用12-24

    C語言if語句的使用11-18

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人