一、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常见数据类型

 typedef unsigned long       DWORD;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef float FLOAT;
typedef FLOAT *PFLOAT;
typedef BOOL near *PBOOL;
typedef BOOL far *LPBOOL;
typedef BYTE near *PBYTE;
typedef BYTE far *LPBYTE;
typedef int near *PINT;
typedef int far *LPINT;
typedef WORD near *PWORD;
typedef WORD far *LPWORD;
typedef long far *LPLONG;
typedef DWORD near *PDWORD;
typedef DWORD far *LPDWORD;
typedef void far *LPVOID;
typedef CONST void far *LPCVOID; typedef int INT;
typedef unsigned int UINT;
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的

C++常用数据类型和Windows常见数据类型的更多相关文章

  1. Access数据库的常用数据类型和alter的用法

    一.Access比较常用的数据类型:文本.备注.数字.日期/时间.货币 意思          Sql                    Access 1)文本      nvarchar(30) ...

  2. C#中rpt的数据类型和Oracle中数据类型的匹配

    Oracle中number数据类型对应C#中decimal数据类型,结果是整数 Oracle中number数据类型对应C#中int32数据类型,结果是小数,保留两位小数 Oracle中中date类型数 ...

  3. HALCON数据类型和C#对应数据类型的对比

    摘要:HALCON数据类型:Iconic Variables(图形变量).Control Variables(控制变量).在C#中,图形变量用HObject声明,控制变量用HTuple声明.(halc ...

  4. 三十一:数据库之SQLAlchemy属性常用数据类型和Column常用参数

    SQLAlchemy属性常用数据类型 Column常用参数

  5. Java数据类型和MySql数据类型对应一览

    类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.String 12   CHAR N ...

  6. Sql Server中的数据类型和Mysql中的数据类型的对应关系(转)

    Sql Server中的数据类型和Mysql中的数据类型的对应关系(转):https://blog.csdn.net/lilong329329/article/details/78899477 一.S ...

  7. SQL数据类型和C#数据类型间的转换

    今天看到SQL数据类型和C#数据类型间的转换,前人留下的. <?xml version="1.0" encoding="utf-8" ?> < ...

  8. MySql数据类型和Java数据类型对应一览

    类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.String 12   CHAR N ...

  9. Java数据类型和MySql数据类型对应一览 [转]

    类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.String 12   CHAR N ...

随机推荐

  1. 基于熵的方法计算query与docs相似度

    一.简单总结 其实相似度计算方法也是老生常谈,比如常用的有: 1.常规方法 a.编辑距离 b.Jaccard c.余弦距离 d.曼哈顿距离 e.欧氏距离 f.皮尔逊相关系数 2.语义方法 a.LSA ...

  2. Java中boolean类型占用多少个字节?我说一个,面试官让我回家等通知

    摘自:https://www.cnblogs.com/qiaogeli/p/12004962.html 程序员乔戈里 腾讯面试官问我Java中boolean类型占用多少个字节?我说一个,面试官让我回家 ...

  3. 数据结构-用C++实现一个二叉树,递归方法中序遍历

    1:二叉排序树,又称二叉树.其定义为:二叉排序树或者空树,或者是满足如下性质的二叉树. (1)若它的左子树非空,则左子树上所有节点的值均小于根节点的值. (2)若它的右子树非空,则右子树上所有节点的值 ...

  4. rabbitmq权限细分二

    禁止用户远程登录 主要有以下几步 1.进入容器 docker exec -it ID /bin/bash 2.打开配置文件 vi /etc/rabbitmq/rabbitmq.conf 3.加入配置, ...

  5. sass 插值语句的使用

    定义了一个 px 转 rem 的函数 @function remP($px) { @return $px / (750 / 15) * 1rem; } 在使用 calc 的时候想要使用函数求值的时候遇 ...

  6. HearthBuddy 突袭 rush

    https://hearthstone.gamepedia.com/Rush Rush is an ability allowing a minion to attack other minions ...

  7. P2602 [ZJOI2010]数字计数&P1239 计数器&P4999 烦人的数学作业

    P2602 [ZJOI2010]数字计数 题解 DFS 恶心的数位DP 对于这道题,我们可以一个数字一个数字的求 也就是分别统计区间 [ L , R ] 内部数字 i 出现的次数 (0<=i&l ...

  8. npm 权限

    将npm默认目录定向到其他你具有读写权限的目录 很多时候你可能并不想改变npm所用的默认目录(如/usr)的拥有者,因为这可能会导致一些问题,比如你在与其他用户共用此系统时. 这时,你可以设置npm整 ...

  9. springboot 整合logback(有全套的日志配置文件)

    logback介绍:基于Log4j基础上大量改良,不能单独使用,推荐配合日志框架SLF4J来使用,可以和springboot很好的整合,也是springboot默认推荐的. 1.在resources ...

  10. easyUI之Messager(消息窗口)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...