c語言問號冒號的用法
有些信息在存儲時,並不需要佔用一個完整的字節,而只需佔幾個或一個二進制位。例如在存放一個開關量時,只有0和1兩種狀態,用一位二進位即可。下面小編來爲大家介紹C語言問號冒號的用法。
爲了節省存儲空間,並使處理簡便,C語言又提供了一種數據結構,稱爲“位域”或“位段”。所謂“位域”是把一個字節中的二進位劃分爲幾個不同的區域,並說明每個區域的位數。每個域有一個域名,允許在程序中按域名進行操作。這樣就可以把幾個不同的對象用一個字節的二進制位域來表示。
c語言問號冒號的用法如下:
一、位域的定義和位域變量的'說明位域定義與結構定義相仿,其形式爲:
struct位域結構名
{位域列表};
其中位域列表的形式爲:類型說明符位域名:位域長度
例如:
structbs
{
inta:8;
intb:2;
intc:6;
};
位域變量的說明與結構變量說明的方式相同。可採用先定義後說明,同時定義說明或者直接說明這三種方式。例如:
structbs
{
inta:8;
intb:2;
intc:6;
}data;
說明data爲bs變量,共佔兩個字節。其中位域a佔8位,位域b佔2位,位域c佔6位。對於位域的定義尚有以下幾點說明:
1.一個位域必須存儲在同一個字節中,不能跨兩個字節。如一個字節所剩空間不夠存放另一位域時,應從下一單元起存放該位域。也可以有意使某位域從下一單元開始。例如:
structbs
{
unsigneda:4
unsigned:0/*空域*/
unsignedb:4/*從下一單元開始存放*/
unsignedc:4
}
在這個位域定義中,a佔第一字節的4位,後4位填0表示不使用,b從第二字節開始,佔用4位,c佔用4位。
2.位域可以無位域名,這時它只用來作填充或調整位置。無名的位域是不能使用的。例如:
structk
{
inta:1
int:2/*該2位不能使用*/
intb:3
intc:2
};
從以上分析可以看出,位域在本質上就是一種結構類型,不過其成員是按二進位分配的。
又:
1:指針類型變量不能指定所佔的位數
2.在聲明成員變量時,可以用變量名:bit數;
來確定結構體類型的成員變量的值所佔的字位數,如果在實際應用中,該變量的值超出了在聲明它時所聲明的字位數,那麼溢出的部分將會丟失。
例子:
#include
#include
usingnamespacestd;
structBitVariable{
unsigneda:2;
unsignedb:3;
unsigned:0;
unsignedc:6;
}BitVariable1;
intmain(intargc,char*argv[])
{
BitVariableBV1;
BV1.a=2;//10
BV1.b=8;//1000
BV1.c=86;//1010110
cout<<BV1.a<<endl;//output2<===>10B
cout<<BV1.b<<endl;//output0<===>1000B
cout<<BV1.c<<endl;//output22<===>10110B
cout<<sizeof(BitVariable)<<endl;//32位機器佔4字節。如果將unsigned:0;去掉,則此處輸出4。
system("PAUSE");
returnEXIT_SUCCESS;
}
相關文章
-
c語言問號冒號怎麼用
有些信息在存儲時,並不需要佔用一個完整的字節,而只需佔幾個或一個二進制位。例如在存放一個開關量時,只有0和1兩種狀態,用一位二進位即可。下面小編給大家整理了c語言問號冒號的用法,供大家參閱。爲了節省存儲空間,並使處 -
會考語文知識點:頓號、逗號、分號、問號的使用
一、頓號、逗號、分號的使用1、頓號是句子內部最小的停頓,常用在並列的詞或短語之間(分句之間不能用頓號)。但並列性的謂語、補語之間不用頓號,只用逗號。如:這個省今年的水利建設,任務重,工程難,規模大。 你要不斷地進步,識 -
c語言小括號的用法
C語言的小括號裏面表示一條語句,返回值是多條語句中最靠右的語句的返回值,比如(a=2,b=3,c=a+b),返回值就是c的值。下面小編就爲大家介紹c語言小括號的用法。c語言小括號的用法如下:1、單小括號 ()①命令組。括號中的命令 -
c語言大括號的用法
大括號{}出現在shell腳本的各個角落,其用法也各有不同。同音多義字在漢語中最容易讓人混淆,而大括號也正是bash語言中的“同音多義字”。下面小編就爲大家介紹c語言大括號的用法。 {}第一種用法,符號擴展#!/bin/bashech -
c語言單引號的用法指導
C語言中用單引號引起的一個字符實際上代表一個整數,整數值對應於該字符在編譯器採用的字符集中的序列值。而一般我們的編譯器採用的都是ASCII字符集。因此's'的含義其實和十進制數115的含義是一致的。下面小編 -
c語言方括號的用法介紹
C語言中方括號是用來定義數組的表示數組的長度,而大括號是用來賦初始值的,表示這個變量的取值,下面小編給大家整理了c語言方括號的用法,供大家參閱。1、單中括號 []①bash 的內部命令,[和test是等同的。如果我們不用絕對路 -
c語言小括號的用法有哪些
C語言的小括號裏面表示一條語句,返回值是多條語句中最靠右的語句的返回值,比如(a=2,b=3,c=a+b),返回值就是c的值。下面小編就爲大家介紹c語言小括號的用法。1、單小括號 ()①命令組。括號中的命令將會新開一個子shell順 -
關於c語言約瑟夫問題輸出序號算法
約瑟夫問題#include#includetypedef struct node{int data;struct node *next;}LNode,*LinkList;int YSF(LinkList m,int n,int l);void main(){int x,y,z;LinkList p,q,r;//p用來指向第一個人,r、q用來實現尾插法構建 -
C語言單引號和雙引號的區別
導語:C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。下面我們來看看C語言單引號和雙引號的`區別,希望對大家有所幫助。最近的C語言課 -
C語言中單引號與雙引號的區別
單引號和雙引號在C中的意義完全不同,包圍在單引號中的一個字符只是編寫整數的另一種方法。這個整數是給定的字符在實現的對照序列中的一個對應的值,即ASCII碼值。以下是小編爲大家搜索整理的'C語言中單引號與雙引號的