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: 无符号INTLONG: 32位符号整型(LONG32)ULONG: 无符号LONGLONGLONG: 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,否则为CHARUCHAR: 无符号CHARWCHAR: 16位Unicode字符BOOL: 布尔型变量BYTE: 字节类型(8位)CONST: 常量FLOAT: 浮点数据类型SIZE_T: 表示内存大小,以字节为单位,其最大值是CPU最大寻址范围VOID: 无类型,相当于标准C语言中的voidWINAPI: 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常见数据类型相关推荐
- 常用数据类型和bytes数组互转
常用数据类型和bytes数组互转 简介 常用于tcp和udp传输,通过约定协议进行数据交互 示例 1.在Python中一般用struct库进行常见的转换,主要对数字进行处理,包括int.float等 ...
- 数据库中的数据类型和c#的数据类型的映射表[转]
原本都没有在想直接这样贴人家的博客了,因为这样感觉很没有意意义,网上有太多的直接Ctrl+C,Ctrl+V的文章,我看得都闲烦人.不过这篇的数据映射感觉比较有贴的意义.以前很少做数据库的,就没有想过数 ...
- 数据库中的数据类型和c#的数据类型的映射表(转)
原文出自:http://www.cnblogs.com/Diwore/archive/2008/09/30/1302343.html 对应关系表 SQL Server 2000 C# Code ...
- Java的数据类型和c语言数据类型的区别
**1.**前言:相信很多同志在疑惑,c语言和Java为什么都要学习数据类型,明明看起来没啥区别,但实际上Java的则更要繁琐. **2.**首先,Java中的char是俩个字节,这是由于Java使用 ...
- MySQL调优(二):数据类型和schema优化,MySQL8.0取消查询缓存的原因
数据类型和schema优化 数据类型的优化 合理使用范式和反范式 三大范式: 1.表不可分 2.不能存在传递依赖 3.表里其他列的值必须唯一依赖于主键 约定大于规范,没有必要严格遵守范式,以业务为准, ...
- MySQL(二)数据类型和schema优化
数据类型和schema优化 数据类型的优化 更小的通常更好 <高性能MySQL> 应该尽量使用可以正确存储数据的最小数据类型,更小的数据类型通常更快,因为它们占用更少的磁盘.内存和CPU缓 ...
- Python数据类型、Numpy数据类型和Pytorch中的tensor类型间的相互转化
数据类型包括Python数据类型.Numpy数据类型和Pytorch中的tensor,Pytorch中的tensor又包括CPU上的数据类型和GPU上的数据类型. 一.Python数据类型 Pytho ...
- 金仓数据库KingbaseES数据类型和oracle数据类型的映射表
关键字:kingbase,oracle,数据类型 KingbaseES数据类型和oracle数据类型的映射表如下: Oracle数据类型 KingbaseES 数据类型 备注说明(Oracle) 数值 ...
- 学习MySQL,怎么能不会数据类型和schema优化!
作者 | 草捏子 来源 | 草捏子(ID:chaycao) 头图 | CSDN 下载自东方IC 本文就数据类型和schema方面的优化进行介绍. 选择优化的数据类型 MySQL支持的数据类型有很多, ...
- linux 进程间通信 dbus-glib【实例】详解三 数据类型和dteeth(类型签名type域)(层级结构:服务Service --> Node(对象、object) 等 )(附代码)
linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...
最新文章
- 数据挖掘-matplotlib、numpy、pandas
- 【数据结构】顺序循环队列及其实现(C语言)
- oracle00313 ora27037,ORA-00313, ORA-00312, ORA-27037 in Standby Database
- jasonrpcbridge
- Vue学习小札——2.6 组件参数校验与非props特性
- c++ builder 读取指定单个名称节点的值
- 模块讲解----time与date time(时间模块)
- 【Android 安全】DEX 加密 ( Application 替换 | 创建用户自定义 Application | 替换 ContextImpl 对象的 mOuterContext 成员 )
- python中的os abort_Python::OS 模块 -- 进程管理
- 深入浅出CSS(二):关于雪碧图、background-position与steps函数的三角恋情
- RxSwift之UI控件Label扩展的使用
- Python 编码风格参考
- 【selenium】 selenium web测试工具介绍(一)
- vue基于element-ui制作的成绩管理系统(四)个人信息
- DM365视频处理流程/DM368 NAND Flash启动揭秘
- 如何衡量两个词的相关度
- 链表的代码实现【数据结构F】
- mysql 中文转拼音(简拼/全拼) 支持多音
- 精确光源 Punctual Light Source
- (三)Detecting Spacecraft Anomalies Using LSTMs and Nonparametric Dynamic Thresholding
热门文章
- mysql5.7.22.zip使用,mysql5.7.22 zip 版安装
- python如何处理inp文件_python 之文件操作
- mysql简述光标_MySQL数据库光标使用介绍
- mysql查询更新删除_mysql查询,更新(text类型),删除关联操作
- 鸿蒙系统基于安卓10.0,鸿蒙系统呢?华为首批升级安卓10.0机型曝光:这11款!...
- 代码高亮_安卓集成代码高亮显示开源包
- web开发中遇到的#65279导致网页开头空白
- 解决idea中http://java.sun.com/jsp/jstl/core“红色异常
- MyBatis(三)------MyBatis的核心组件
- 各种求最大公约数的函数