C++常用數據類型和Windows常見數據類型


一、C++基本的內置類型

C++ 為程序員提供了種類豐富的內置數據類型和用戶自定義的數據類型。下表列出了七種基本的 C++ 數據類型:

類型 關鍵字
布爾型 bool
字符型 char
整型 int
浮點型 float
雙浮點型 double
無類型 void
寬字符型 wchar_t

一些基本類型可以使用一個或多個類型修飾符進行修飾:

  • signed
  • unsigned
  • short
  • long

下表顯示了各種變量類型在內存中存儲值時需要占用的內存,以及該類型的變量所能存儲的最大值和最小值。

注意:不同系統會有所差異。

復制代碼
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     //打印int類型的最大值
 8     cout << "int類型最大值:" << INT_MAX << endl;
 9     //打印int類型的最小值
10     cout << "int類型最小值:" << INT_MIN << endl;
11     //打印int所占字節數
12     cout << "int類型字節數:" << sizeof(int);
13     return 0;
14 }
復制代碼

 

類型 位數(字節) 范圍
char 8位,1 個字節 -128 到 127 或者 0 到 255
unsigned char 8位,1 個字節 0 到 255
signed char 8位,1 個字節 -128 到 127
int 32位,4 個字節 -2147483648 到 2147483647
unsigned int 32位,4 個字節 0 到 4294967295
signed int 32位,4 個字節 -2147483648 到 2147483647
short int 16位,2 個字節 -32768 到 32767
unsigned short int 16位,2 個字節 0 到 65,535
signed short int 16位,2 個字節 -32768 到 32767
long int 64位,8 個字節 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
signed long int 64位,8 個字節 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long int 64位,8 個字節 0 to 18,446,744,073,709,551,615
float 32位,4 個字節 +/- 3.4e +/- 38 (~7 個數字)
double 32位,8 個字節 +/- 1.7e +/- 308 (~15 個數字)
long double 128位,16 個字節 +/- 1.7e +/- 308 (~15 個數字)
wchar_t 2 或 4 個字節 1 個寬字符

從上表可得知,變量的大小會根據編譯器和所使用的電腦而有所不同。

 

二、Windows常見數據類型

 1 typedef unsigned long       DWORD;
 2 typedef int                 BOOL;
 3 typedef unsigned char       BYTE;
 4 typedef unsigned short      WORD;
 5 typedef float               FLOAT;
 6 typedef FLOAT               *PFLOAT;
 7 typedef BOOL near           *PBOOL;
 8 typedef BOOL far            *LPBOOL;
 9 typedef BYTE near           *PBYTE;
10 typedef BYTE far            *LPBYTE;
11 typedef int near            *PINT;
12 typedef int far             *LPINT;
13 typedef WORD near           *PWORD;
14 typedef WORD far            *LPWORD;
15 typedef long far            *LPLONG;
16 typedef DWORD near          *PDWORD;
17 typedef DWORD far           *LPDWORD;
18 typedef void far            *LPVOID;
19 typedef CONST void far      *LPCVOID;
20 
21 typedef int                 INT;
22 typedef unsigned int        UINT;
23 typedef unsigned int        *PUINT;

 

1、常見數據類型
  WORD:                16位無符號整形數據
  DWORD:             32位無符號整型數據(DWORD32)
  DWORD64:         64位無符號整型數據
  INT:                       32位有符號整型數據類型
  INT_PTR:             指向INT數據類型的指針類型
  INT32:                  32位符號整型
  INT64:                  64位符號整型
  UINT:                    無符號INT
  LONG:                 32位符號整型(LONG32)
  ULONG:              無符號LONG
  LONGLONG:      64位符號整型(LONG64)
  SHORT:              無符號短整型(16位)
  LPARAM:           消息的L參數
  WPARAM:         消息的W參數
  HANDLE:           對象的句柄,最基本的句柄類型
  HICON:               圖標的句柄
  HINSTANCE:    程序實例的句柄
  HKEY:                注冊表鍵的句柄
  HMODULE:       模塊的句柄
  HWND:              窗口的句柄
  LPSTR:              字符指針,也就是字符串變量
  LPCSTR:           字符串常量
  LPCTSTR:         根據環境配置,如果定義了UNICODE宏,則是LPCWSTR類型,否則則為LPCSTR類型
  LPCWSTR:       UNICODE字符串常量
  LPDWORD:      指向DWORD類型數據的指針
  CHAR:               8比特字節
  TCHAR:             如果定義了UNICODE,則為WCHAR,否則為CHAR
  UCHAR:            無符號CHAR
  WCHAR:           16位Unicode字符
  BOOL:                布爾型變量
  BYTE:                 字節類型(8位)
  CONST:             常量
  FLOAT:              浮點數據類型
  SIZE_T:              表示內存大小,以字節為單位,其最大值是CPU最大尋址范圍
  VOID:                 無類型,相當於標准C語言中的void
  WINAPI:             Windows API的函數調用方式,常見於SDK頭文件中對API函數的聲明中,相當於_stdcall(更嚴格地說,這不是數據類型,而是一種函數調用約定

2、Windows數據類型命名規律

        基本數據類型包括:BYTE、CHAR、WORD、SHORT、INT等。
  指針類型的命令方式一般是在其指向的數據類型前加“LP”或“P”,比如指向DWORD的指針類型為“LPDWORD”和“PDWORD”
  各種句柄類型的命名方式一般都是在對象名前加“H”,比如位圖(BITMAP)對應的句柄類型為“HBITMAP”。
  無符號類型一般是以“U”開頭,比如“INT”是符號類型,“UINT”是無符號類型
  根據這些命名規律以及自己的經驗看到一些沒見過的數據類型也就能知道它的代表的意思

3、Windows參數簡寫

 

1、  b 布爾

2、 by BYTE

3、 c chr 或WCHAR TCHAR

4、 n short

5、 i int

6、 x、y 分別表示x 坐標,y 坐標

7、 cx、cy 分別表示x 方向長度和y 方向長度

8、 b 或f BOOL(int),f 代表“flag”

9、 w WORD(無符號short)

10、l LONG 長整數

11、dw DWORD 無符號長整數

12、fn function 函數

13、s string 字符串

14、sz 以0 字節結尾的字符串

15、h 句柄

16、p 指針

17、lpfn 指向函數的長指針

18、cb 字節數

19、lpsz 指向以0 結尾的字符串的長指針

20、g_ 全局變量

21、c_ 常量

22、m_ 類數據成員

23、s_ 靜態變量

24、CS_ 類風格選項

25、CW_ 創建窗口選項

26、DT_ 繪制文本選項

27、IDI_ 圖標ID 號 
28、IDC_ 光標ID 號

29、MB_ 消息框選項

30、SND_ 聲音選項

31、WM_ 窗口消息

32、WS_ 窗口風格

33、rc 矩形

 

4、Windows數據類型與標准C數據類型的關系

       查看Windows數據類型的定義可以看到,所有的windows數據類型都是由C數據類型經過類型重定義得到的。

        DWORD實質上就是 unsigned long 數據類型,32位無符號整型。

        HANDLE類型實質上是void,HANDLE定義為:
  typedof    PVOID    HANDLE;
  HANDLE實際上就是一個PVOID,那PVOID又是什么呢?
  typeof     void      *PVOID;
  PVOID就是指向void的指針。
  所有的Windows數據類型都是通過這種方式在SDK的頭文件中進行定義的,它們都是來源於標准C的


免責聲明!

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



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