Win32数据类型

  学习过C语言的童鞋,应当对C语言数据类型非常熟悉,但C语言的数据类型有如下几个缺陷:

  * 数据类型平台相关,在不同平台上,同一个数据类型可能占用不同的空间大小。典型的,在16位系统上,int类型和short int类型长度相同,但在32位平台上,则和long int类型长度相同;

  * 数据类型过于单一,例如在表现数值和布尔这两种情况时,虽然它们都是32位长度,但分开表达显然更加方便和直观;

  * 平台差异,例如__int64, long long, wchar_t, longptr_t这些类型,在不同的平台上可能定义的并不相同;

  为了解决这些问题,微软使用typedef关键字,为很多常用的C类型均定义了别名,这样一来,要解决源代码移植问题,只需在目标平台上定义相同的一套类型别名,即可解决大部分问题。

#include <windows.h>

int_tmain(intargc, TCHAR* argv[])
{
	// BOOL类型, 它映射在int类型上, 表示布尔逻辑。
	// 还有两个宏TRUE, 映射为1, FALSE映射为0
	BOOL bGood = TRUE;       

	// CHAR类型, 映射在char类型上
	// 表示一个字符, 有符号8位整型
	CHAR cWord = 0x7F;       

	// BYTE类型, 映射在unsigned char类型上, 
	// 表示一个无符号8位整型
	BYTE ucWord = 0xFF;

	// SHORT类型, 映射在short类型上, 
	// 表示一个有符号16位整型
	SHORT sNum = 0x7FFF;

	// USHORT类型, 映射在unsigned short类型上, 
	// 表示一个无符号16位整型
	USHORT usNum = 0xFFFF;

	// INT类型, 映射在int类型上, 
	// 表示一个有符号32位整型
	INTnNum = 0x7FFFFFFF;

	// UINT类型, 映射在unsigned int类型上, 
	// 表示一个无符号32位整型
	UINT uNum = 0xFFFFFFFF;

	// LONG类型, 映射在long类型上, 
	// 表示一个有符号32位整型
	LONG lNum = nNum;

	// ULONG类型, 映射在unsigned long类型上, 
	// 表示一个无符号32位整型
	ULONG ulNum = uNum;

	// UINT_PTR类型, 即C中的uintptr_t类型, 
	// 表示一个无符号32位整型, 一般用来保存一个指针
	UINT_PTR lpPtr = (UINT_PTR)_T("Hello World");

	// ULONG_PTR类型, 即32位系统下的UINT_PTR类型
	ULONG_PTR lpLptr = (ULONG_PTR)lpPtr;

	// LONGLONG类型, 即C语言中的long long类型, 
	// Win32定义为__int64, 有符号64位整型
	LONGLONG llBigValue = 0x7FFFFFFFFFFFFFFF;

	// ULONGLONG类型, 即C语言的unsigned long long 类型, 
	// Win32定义为unsigned __int64, 无符号64位整型
	ULONGLONG ullBigValue = 0xFFFFFFFFFFFFFFFF;   

	// WORD类型, 字类型, 映射在unsigned short类型上, 表示一个字
	WORD wNum = usNum;

	// DWORD类型, 双字类型, 映射在unsigned long类型上, 表示两个字
	DWORD dwNum = ulNum;   

	// FLOAT类型, 映射在float类型上, 有符号32位浮点数, 单精度浮点类型
	FLOAT fNum = 123.123;

	// DOUBLE类型, 映射在double类型上, 有符号64位浮点数, 双精度浮点类型
	DOUBLE dNum = 456.456;   

	// WCHAR类型, 映射在wchar_t类型上, 表示一个UNICODE字符, 无符号16位整型
	WCHAR wcWord = L'人';

	// TCHAR类型, 在定义了_UNICODE宏时, 映射到wchar_t类型上, 否则映射到char类型上
	TCHAR tcWord = _T('M');


	// LPSTR类型, 映射在char*类型上, 表示一个指向字符串的指针
	LPSTR lpszStr = "Hello Everyone";

	// LPCSTR类型, 映射在constnchar*类型上, 表示一个指向字符串的不变指针
	LPCSTR lpcszStr = lpszStr;


	// LPWSTR类型, 映射在wchar_t*类型上, 表示一个指向UNICODE编码字符串的指针
	LPWSTR lpwcStr = L"Hello Everyone";

	//n LPCWSTR类型, 映射在const wchar_t*类型上, 表示一个指向UNICODE编码字符串的不变指针
	LPCWSTR lpcwcStr = lpwcStr;

	// LPTSTR类型, 映射在TCHAR*类型上, 根据是否定义_UNICODE宏, 映射为LPSTR或LPWSTR
	LPCTSTR lpcszTStr = lpszTStr;

	// LPCTSTR类型, 映射在const TCHAR*类型上, 根据是否定义_UNICODE宏, 映射为LPCSTR或LPCWSTR
	LPTSTR lpszTStr = _T("Hello Everyone");   

    return 0;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值