深入理解結(jié)構(gòu)體中占位符的用法
更新時(shí)間:2013年05月28日 12:15:00 作者:
本篇文章是對(duì)結(jié)構(gòu)體中占位符的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
復(fù)制代碼 代碼如下:
typedef union
{
struct x{
char a1 : 2;
char b1 : 3;
char c1 : 3;
}x1;
char c;
}my_un;
int main()
{
my_un a;
a.c = 100;
printf("%d/n",a.x1.c1);
printf("%d/n",sizeof(my_un));
return 0;
}
輸出結(jié)果:
3
1
即第一個(gè)是3, 而聯(lián)合體的大小為 1
分析:
sizeof為1表示1個(gè)字節(jié),結(jié)構(gòu)體中占位符冒號(hào)表示占的位數(shù),實(shí)際上還是3+3+2=8位就是1個(gè)字節(jié)
100--->01100100
共用體中結(jié)構(gòu)體的數(shù)據(jù)也為100.
a1占低2位(00);
b1占低3到5位(001);
c1占高3位(011);
因此a.x1.c1打印值為3.
sizeof(my_un);
共用體所占的字節(jié)大小取決于最大成員.它們都為1(結(jié)構(gòu)體所占比特位為2+3+3=8位,char型為1字節(jié)).
所以為1.
相關(guān)文章
C++?RBTree紅黑樹的性質(zhì)與實(shí)現(xiàn)
紅黑樹是一種二叉搜索樹,但在每個(gè)結(jié)點(diǎn)上增加一個(gè)存儲(chǔ)位表示結(jié)點(diǎn)的顏色,可以是Red或Black;通過對(duì)任何一條從根到葉子的路徑上各個(gè)結(jié)點(diǎn)著色方式的限制,紅黑樹確保沒有一條路徑會(huì)比其他路徑長(zhǎng)出倆倍,因而是平衡的2023-03-03
C語言定義字符串?dāng)?shù)組簡(jiǎn)單代碼示例
在C語言中字符串?dāng)?shù)組是用來存儲(chǔ)多個(gè)字符串的,可以通過字符數(shù)組或指針數(shù)組的方式定義,這篇文章主要介紹了C語言定義字符串?dāng)?shù)組的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-11-11
C語言中strcpy()函數(shù)的具體實(shí)現(xiàn)及注意事項(xiàng)
C語言庫函數(shù)char *strcpy(char *dest, const char *src)把src所指向的字符串復(fù)制到dest,下面這篇文章主要給大家介紹了關(guān)于C語言中strcpy()函數(shù)的具體實(shí)現(xiàn)及注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下2022-11-11
C語言棧的表示與實(shí)現(xiàn)實(shí)例詳解
這篇文章主要介紹了C語言棧的表示與實(shí)現(xiàn),對(duì)于數(shù)據(jù)結(jié)構(gòu)與算法的研究有一定的借鑒價(jià)值,需要的朋友可以參考下2014-07-07
C++數(shù)據(jù)結(jié)構(gòu)之鏈表的創(chuàng)建
這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)之鏈表的創(chuàng)建的相關(guān)資料,希望通過本文幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10

