一、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. codeforces555E

    Case of Computer Network CodeForces - 555E Andrewid the Android is a galaxy-known detective. Now he ...

  2. 关于kafka定期清理日志后再消费报错kafka.common.OffsetOutOfRangeException的解决

    环境: kafka  0.10 spark  2.1.0 zookeeper  3.4.5-cdh5.14.0 公司阿里云测试机,十月一放假前,没有在继续消费,假期过后回来再使用spark strea ...

  3. ACM之路(14)—— 线段树的日常(上)

    我的线段树简直有毒,各种错误都能忙上半天.做了kuangbin的线段树专题的一半,还有一半留到以后去做. 链接:http://acm.hust.edu.cn/vjudge/contest/view.a ...

  4. hadoop patch

    ERROR org.apache.hadoop.hdfs.server.blockmanagement.BlockManager: ReplicationMonitor thread received ...

  5. Innodb内存结构

      聚集索引与非聚集索引: 聚集索引:主键,有序,存储顺序与内存一致 非聚集索引:非主键,无序 聚集索引在叶子节点存储的是表中的数据 非聚集索引在叶子节点存储的是主键和索引列 使用非聚集索引查询出数据 ...

  6. BUUCTF平台-web-边刷边记录-1

    1.WarmUp 思路很清晰,文件包含,漏洞点在代码会二次解码,只需注入一个?就可以使用../../进行路径穿越,然后去包含flag,flag路径在hint.php里面有 2.easy_tornado ...

  7. 20175227张雪莹 2018-2019-2 《Java程序设计》第十周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第十周学习总结 教材学习内容总结 第十二章 Java多线程机制 进程与线程 线程是比进程更小的执行单位,一个进程在其执行 ...

  8. Nginx作为静态资源web服务-跨站访问

    一.跨域访问 1.什么是跨域? 参看我的另一篇博客(https://www.cnblogs.com/chrdai/p/11280895.html) 2.为什么浏览器禁止跨域访问? 不安全,容易出现CS ...

  9. 前端知识点回顾之重点篇——JavaScript异步机制

    JavaScript异步机制 来源:https://www.cnblogs.com/zhaodongyu/p/3922961.html JavaScript是单线程异步执行的,单线程意味着代码在任务队 ...

  10. Android数据存储的方式

    1. 内部存储    * 路径:  /data/data/包名/    * cache用于存储临时文件,系统内存不足时,清除缓存数据    * files用于存储重要的文件,要用户手动在应用程序列表清 ...