❶ c語言 結構體 共用體 占內存位元組
共用體:
sizeof(union
data1)的值為16.在編譯器默認設置的情況下,該共用體最大基本類型為double,它佔8位元組,所以此共用體以8來對齊。字元數組c2佔9個位元組,那麼整個共用體應該佔9個位元組,但按照對齊原則,實際分配給它的內存為16位元組。
結構體:
struct
data以8個位元組對齊,long類型的成員1分配8個位元組。s、i、c、a原本分別佔4、2、1、10個位元組。由於考慮到對齊,s分配4個位元組,i分配
2個位元組,c分配2個位元組,此時剛好用完8個位元組。a原本分配10個位元組,由於考慮到對齊,要使整個結構體所佔的存儲空間是8的倍數,所以分配給它16個位元組。因此結構體data佔8+4+4+2+16=32個位元組。
❷ c語言中double型數據在內存中 佔多少個位元組來存儲
c語言中double(雙精度浮點型)是計算機使用的一種數據類型。double(雙精度浮點型)使用 64 位(8位元組) 來儲存一個浮點數。 它可以表示十進制的15或16位有效數字,其數值范圍為-1.79769313486232E308 到1.79769313486232E308。
(2)c語言儲存空間和位元組擴展閱讀:
double(雙精度浮點型)數值可轉換到其他類型的整數或浮點數,反之亦然。double(雙精度浮點型)常量的最後一個字元可加上「d」或「D」。其存儲格式與浮點型類似,最高位為符號位,次高11位為指數位,其次52位為尾數。
double(雙精度浮點型)同數值型比,它能提供更高的數值精度,採用固定存儲長度的浮點數形式,與數值型數據不同,它的小數點位置是由輸入的數據值來決定的,並且只能用於表中的欄位。
❸ c語言中double和float它們存儲時分別占據多大的內存空間
double
中文譯為雙精度浮點數,一般稱雙精度數,它在內存中佔用8個位元組(位、bit)的空間;float
中文譯為單精度浮點數,一般就稱為浮點數,它在內存中佔用4個位元組的空間。
❹ C語言中,各種類型的整型數據在內存中都佔用4個位元組嗎
不是。
C標准並沒有具體給出規定哪個基本類型應該是多少個位元組數,而且這個也與OS、編譯器有關,比如同樣是在32位操作系統,VC++的編譯器下int類型為4個位元組,而在tuborC下則是2個位元組。
整型類型在雖然16位、32位或者64位的機子各種類型並不一樣,但有幾條規則(ANSI/ISO制定):
short至少佔用2個位元組。
int建議為一個機器字長,32位環境下為4位元組,64位環境下為8位元組。
short的長度不能大於int,long的長度不能小於int。
(4)c語言儲存空間和位元組擴展閱讀
整型數據分為基本整形(int)、短整型(short int)、長整型(long int)以及新添加的雙長整型(long long int)。
基本整形(int):一般占據2個或者4個位元組,這都是有編譯系統決定的。一般來講在vc中計算機給它分配4個位元組,在計算機中整型數據一般是按補碼的形式存儲的。
短整型(short int):在vc中計算機分配給短整型的內存大小為2個位元組。存儲方式與基本整形相同,一個短整型的數據范圍是:-32768-32767。
長整型數據(long int):在vc中系統分配給它4個位元組,多以一個長整型數據的范圍為-2的31次方到2的31次方減一。
雙長整型(long long int):在vc中系統給它分配8個位元組,這種數據類型一般比較少用。
❺ c語言結構體的問題,存儲空間大小
win32
4位元組對齊
變數內存的起始地址的邊界是跟它類型一致的
比如int類型,可以認為它存在4的倍數的地址,short存在2位元組倍數開始的地址,char存在1位元組開始的地址,即任意地址
因此,回過頭來看
第一個結構
假設int
a;///4位元組倍數地
short
b;//推理a的末尾是4位元組倍數地址也是2位元組倍數地址,所以b是挨著a存的
char
c;//任意其實地址,挨著b存放
看起來7個位元組就放下了,但是需要兼顧4位元組對齊的原則,在末尾補了一個位元組
第二個結構也類似
結構體與普通類型並無大區別,存儲區域也一樣的
❻ C語言中,一個位元組等於都少個內存單元,等於多少位內存單元
一個位元組是一個內存單元
同時一個位元組是8位
也就是一個內存單元既是一個位元組也是8個二進制位
1G=1024M
1M=1024K
1K=1024位元組
1位元組=8位
一位是最基本單位
是一個二進制位
要麼是0要麼是1
懂了啊?呵呵
❼ C語言中每個存儲單元是幾個位元組,它由幾個二進制位構成
計算機存儲單元以位元組(BYTE)為單位,一個位元組
由
8個
字元(bit),也就是
8個
二進制位
構成。
一個
int
,
float,
double
....
需幾個位元組存放,可以用
sizeof(int),
sizeof(float),
sizeof(double)
...計算。例如:
printf("int
--
%d
bytes\n",sizeof(int)
);
printf("float
--
%d
bytes\n",sizeof(float)
);
❽ 在c語言中,int,char和short三種類型數據在內存中所佔的位元組數
總結一下哈:針對大部分32位機器來說所佔內存是: char 字元型 1個;int整型2 個;short 2 個;但是,不同的機器,和不同的編譯軟體下,都會不同。所以你可以用sizeof()函數測試一下。例sizeof(char);
這里補充下我的答案,之前回答這個問題時候,自己還是一名單片機開發愛好者,C51單片機中的int確實是16位,兩個位元組。
而現在的我從事應用軟體開發,在這些編譯器中(比如vs、gcc),int一般都是4位的(無論32位還是64位)。事實上,一個比較官方的解釋是:編譯器可以根據自身硬體來選擇合適的大小,但是需要滿足約束:short和int型至少為16位,long型至少為32位,並且short型長度不能超過int型,而int型不能超過long型。這即是說各個類型的變數長度是由編譯器來決定的。
❾ C語言中, 常量 C 在內存中占 多少個位元組
int
4位元組,以前的16位系統是2位元組,現在int在Win32(Win98、nt、2000、xp)中的是4個位元組
char
1位元組
float
4位元組
double
8位元組
其實每個編譯器的類型位元組數不一樣,你可以上網查下。
❿ C語言內存中佔位元組數如下定義
int類型佔2位元組,char佔1位元組,char
a
[10];就為10位元組;float佔4位元組,所以共計16位元組。
若使用vc的mfc,應當為18位元組,因為int
在這里佔4位元組。