zoukankan      html  css  js  c++  java
  • 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的

  • 相关阅读:
    codeforce A. 2Char(水题,暴力)
    hdu 4704 Sum(组合,费马小定理,快速幂)
    light oj 1100
    hdu 4503 湫湫系列故事——植树节(组合概率)
    Codeforces Round #327 (Div. 1), problem: (A) Median Smoothing
    hdu-3833 YY's new problem(数组标记)
    hdu 4549 M斐波那契数列(快速幂 矩阵快速幂 费马小定理)
    hdu 1431 素数回文(暴力打表,埃托色尼筛法)
    hdu 1430 (BFS 康托展开 或 map )
    hdu 1024 max sum plus plus
  • 原文地址:https://www.cnblogs.com/chaoyingLi/p/11236478.html
Copyright © 2011-2022 走看看