1、為了節省空間,操作方便,c語言提供一種資料結構:位域。申明如下:
struct bitfieldbf;
2、基本規則:
(1)如果相鄰位域字段的型別相同,且其位寬之和小於型別的sizeof大小,則後面的字
段將緊鄰前乙個字段儲存,直到不能容納為止;
例子:
int main()
bf;
printf("%d\n",sizeof(bf)); # 1
return 0;
}
2) 如果相鄰位域字段的型別相同,但其位寬之和大於型別的sizeof大小,則後面的字
段將從新的儲存單元開始,其偏移量為其型別大小的整數倍;
例子:
int main()
bf; printf("%d\n",sizeof(bf)); # 2
return 0;
}
3) 整個結構體的總大小為最寬基本型別成員大小的整數倍
例程:
int main()
bf; printf("%d\n",sizeof(bf)); #8
return0;}
int main()
bf; printf("%d\n",sizeof(bf)); #12
return
0;}
C語言位域
有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如在存 放乙個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,語言又提供了一種資料結構,稱為 位域 或 位段 所謂 位域 是把乙個位元組中的二進位劃分為幾個不同的區域,並說明每個區域的位...
C語言位域
1.乙個位域必須儲存在同乙個位元組中,不能跨兩個位元組。如乙個位元組所剩空間不夠存放另一位域時,應從下一單元起存放該位域。也可以有意使某位域從下一單元開始。例如 struct bs 在這個位域定義中,a佔第一位元組的 2位,後6位填 0表示不使用,c 從第二位元組開始,占用1位 2.由於位域不允許跨...
C語言 位域
有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如在存放乙個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,c語言又提供了一種資料結構,稱為 位域 或 位段 所謂 位域 是把乙個位元組中的二進位劃分為幾 個不同的區域,並說明每個區域的...