C++主要數據類型在計算機中所占字節大小


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

先來列一下C++的數據類型:

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

布爾型:bool         

字符型:char,wchar_t

浮點型:float,double

這只能上代碼驗證了,貌似機子不同數據類型所占大小也不同,太威武了,我就檢查下我這個32位windows系統電腦吧。我用的IDE是Code::Blocks,發現挺好用的,主要是工程文件小,不像vs2010建個工程就大得很,哥這小硬盤吃不消啊(題外話)。

先看整型的吧,代碼如下:

#include <iostream>

using namespace std;

int main()
{
    int a;
    long b;
    int Byteof_int=sizeof(a);
    int Byteof_long=sizeof(b);
    cout << "int:" <<Byteof_int<<endl;
    cout << "long:" <<Byteof_long<<endl;
    return 0;
}

結果顯示:

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位操作系統一個內存單元是64位,所以是2個字節;32位系統一個內存單元是是32位,所以是4字節;64位操作系統一個內存單元是16位,故占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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM