int在32位機器中所佔的記憶體大小引發的問題

2021-07-04 22:57:34 字數 2464 閱讀 6512

int在32位機器中所佔的記憶體大小4位元組

1: char   a:   sizeof(a)  =   1;

2: int   a  :     sizeof(a)  =   4;

3:     short  a:   sizeof(a)  =   2;

4:     long a:     sizeof(a)  =    4;

5:     double long a:  sizeof(a)   =   8;

6:     float  a:    sizeof(a)   =    8; //糾正float

佔4個7:     struct a;

struct a a1;

sizeof(a1)   =   1+4+2  =7;

8:     union a;

union a a1:

sizeof(a1)   =   sizeof(c)   =   4*10 = 40;

9:char* a;   sizeof(a)   =   4;

int的長度跟機器長度一致,16位機器int就是16位,類似的32位、64位等等。

16位機器,int佔2b,32位佔4b。

遇到了資料儲存的大端和小端問題,這你妹的看的一頭霧水,發現我基本知識嚴重匱乏啊,先了解c++各資料型別在自己機子上佔多少位元組吧,以及這些資料型別所佔位元組大小與神馬有關。各種查資料然後寫**檢驗,小結於本文中,給自己補補基礎知識。

先來列一下c++的資料型別:

整型:int,long。這兩個還分signed(有符號)和unsigned(無符號)的,當然有符號和無符號所佔位元組大小是一樣的,就不管他了。

布林型:bool         

字元型:char,wchar_t

浮點型:float,double

這只能上**驗證了,貌似機子不同資料型別所佔大小也不同,太威武了,我就檢查下我這個32位windows系統電腦吧。我用的ide是code::blocks,發現挺好用的,主要是工程檔案小,不像vs2010建個工程就大得很,哥這小硬碟吃不消啊(題外話)。

先看整型的吧,**如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#include

usingnamespacestd;

intmain()

結果顯示:

int:4

long:4

int和long都是佔4個位元組(即32位)。

其他資料型別驗證吧上面**資料型別替換下就是了,得出下面的結果:

bool:1

char:1

wchar_t:2

float:4

double:8

特別要注意的時,對於指標型別,都佔4個位元組,因為指標指向的是乙個位址,32位作業系統就是4位元組。當然如果是64位作業系統那就是8位元組了。

此外,int這個型別佔作業系統乙個記憶體單元大小。早先16位作業系統乙個記憶體單元是16位,所以是2個位元組;32位系統乙個記憶體單元是是32位,所以是4位元組;64位作業系統乙個記憶體單元是64位,故佔8個位元組。

因為用到mfc程式設計,mfc裡還有很多資料型別啊,看看吧(這只是一部分,還有很多用typedef和巨集定義的型別)。

bool:int型,boolean值(true or false)

bstr:32-bit字元指標

byte:8-bit整數,無正負號

colorref:32-bit數值,代表乙個顏色值

dword:32-bit整數,無正負號

long:32-bit整數,有正負號

lparam:32-bit數值,作為視窗函式或callback函式的乙個引數

lpcstr:32-bit指標,指向乙個常數字串

lpstr:32-bit指標,指向乙個字串

lpctstr:32-bit指標,指向乙個常數字串。此字串可移植到unicode

lptstr:32-bit指標,指向乙個字串。此字串可移植到unicode

lpvoid:32-bit指標,指向乙個未指定型別的資料

lpresult:32-bit數值,作為視窗函式或callback函式的返回值

uint:win16中,16-bit無正負號,win32中,32-bit無正負號

wndproc:32-bit

word:16-bit整數,無正負號

wparam:視窗函式的乙個引數,win16中16bits,win32中32bits

int在32位機器中所佔的記憶體大小引發的問題

今天看到乙個資料,看到裡面講到int在32位機器中佔的是四個位元組的記憶體,我腦海裡面感覺這個好像不對,然後在網上查了下資料,發現int型別的資料在32位機器中的確佔的記憶體是4個位元組,現在對一些資料結構在記憶體中所佔的位元組數總結下。1 char a sizeof a 1 2 int a siz...

指標變數在記憶體中佔 指標在系統記憶體中所佔的位元組數

sizeof 的特點 printf d int printf d float printf d double 其結果為 4 4 4 這就是面試的時候問你,指標在記憶體中佔多少個位元組?這就是個問題不是簡單的2,4,甚至8個位元組 回答 指標在記憶體中所在的位元組數是由系統的定址能力決定的,定址能力就...

struct物件在記憶體中所佔的空間大小 記憶體對齊

對於乙個struct物件,其在記憶體中所佔空間的大小往往不是所有成員的位元組大小相加之和。執行下面 看一下 include using namespace std union struct demo int main 我在windowsxp,vs2008下輸出為32,為什麼不是1 2 4 4 4 8...