C数据类型及其长度总结.docx_第1页
C数据类型及其长度总结.docx_第2页
C数据类型及其长度总结.docx_第3页
C数据类型及其长度总结.docx_第4页
C数据类型及其长度总结.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言中数据类型的长度以及作用值域类型标识符类型说明长度(字节)范围备注char字符型1-128 127-27 (27 -1)unsigned char无符字符型10 2550 (28 -1)short int短整型2-32768 327672-15 (215 - 1)unsigned short int无符短整型20 655350 (216 - 1)int整型4-2147483648 2147483647-231 (231 - 1)unsigned int无符整型40 42949672950 (232-1)float实型(单精度)41.18*10-38 3.40*1038 7位有效位double实型(双精度)82.23*10-308 1.79*10308 15位有效位long double实型(长双精度)103.37*10-4932 1.18*104932 19位有效位一个指针本身占用4个字节unsigned 用于修饰 int 和 char 类型。它使int 或 char 类型成为无符号类型。signed 是 unsigned 反义词,如 signed int 表示有符号类型,不过signed可以省略,所以上面列出char,short int,int 都是有符号类型。有 short int (短整型) ,所以也就有对应 long int (长整型)。long int 用于表示4个字节(32位)的整数。但是在我们现在普通使用的32位计算机中,int 默认就是4个字节,所以long也是可以省略的。(较早几年,也就是Windows 3.1/DOS 流行的时候,那时的机器及操作系统都是16位的,这种情况下,int 默认是16位的。此时,如果想实现32位整数,就必须定义为这样的类型:long int)。在浮点数方面,我们最常用的将是 double。它的精度适合于我们日常中的各种运算。当然,float的精度也在很多情况下也是符合要求的。布尔型(bool)和无类型(void)除字符型,整型,实型以外,布尔型和无类型也是较常用的两种数据类型。布尔型(bool)布尔类型是C+的内容,C语言没有这一类型。布尔类型的数据只有两种值:true(真) 或 false(假)。什么时候使用布尔型呢?履历表中一般有“婚否”这一项,婚否这种数据就适于用真或假来表示。性别男女,有时也会用布尔值表示,(一般程序都不约而同地把男性设置“真”,女性设置为“假”。)无类型(void)这个类型比较怪“无”类型。是的,没有类型的类型。或者我们这样认为比较好接受:在不需要明确指定类型的时候,我们可能使用 void 来表示。=Visual C+常用数据类型转换详解 本文将介绍一些常用数据类型的使用。 我们先定义一些常见类型变量借以说明 int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username=女侠程佩君; char temp200; char *buf; CString str; _variant_t v1; _bstr_t v2; 一、其它数据类型转换为字符串 短整型(int) itoa(i,temp,10);/将i转换为字符串放入temp中,最后一个数字表示十进制 itoa(i,temp,2); /按二进制方式转换 长整型(long) ltoa(l,temp,10); 二、从其它包含字符串的变量中获取指向该字符串的指针 CString变量 str = 2008北京奥运; buf = (LPSTR)(LPCTSTR)str; BSTR类型的_variant_t变量 v1 = (_bstr_t)程序员; buf = _com_util:ConvertBSTRToString(_bstr_t)v1); 三、字符串转换为其它数据类型 strcpy(temp,123); 短整型(int) i = atoi(temp); 长整型(long) l = atol(temp); 浮点(double) d = atof(temp); 四、其它数据类型转换到CString 使用CString的成员函数Format来转换,例如: 整数(int) str.Format(%d,i); 浮点数(float) str.Format(%f,i); 字符串指针(char *)等已经被CString构造函数支持的数据类型可以直接赋值 str = username; 五、BSTR、_bstr_t与CComBSTR CComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。 char *转换到BSTR可以这样: BSTR b=_com_util:ConvertStringToBSTR(数据);/使用前需要加上头文件comutil.h 反之可以使用char *p=_com_util:ConvertBSTRToString(b); 六、VARIANT 、_variant_t 与 COleVariant VARIANT的结构可以参考头文件VC98IncludeOAIDL.H中关于结构体tagVARIANT的定义。 对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,举个例子: VARIANT va; int a=2001; va.vt=VT_I4;/指明整型数据 va.lVal=a; /赋值 对于不马上赋值的VARIANT,最好先用Void VariantInit(VARIANTARG FAR* pvarg);进行初始化,其本质是将vt设置为VT_EMPTY,下表我们列举vt与常用数据的对应关系: unsigned char bVal; VT_UI1 short iVal; VT_I2 long lVal; VT_I4 float fltVal; VT_R4 double dblVal; VT_R8 VARIANT_BOOL boolVal; VT_BOOL SCODE scode; VT_ERROR CY cyVal; VT_CY DATE date; VT_DATE BSTR bstrVal; VT_BSTR IUnknown FAR* punkVal; VT_UNKNOWN IDispatch FAR* pdispVal; VT_DISPATCH SAFEARRAY FAR* parray; VT_ARRAY|* unsigned char FAR* pbVal; VT_BYREF|VT_UI1 short FAR* piVal; VT_BYREF|VT_I2 long FAR* plVal; VT_BYREF|VT_I4 float FAR* pfltVal; VT_BYREF|VT_R4 double FAR* pdblVal; VT_BYREF|VT_R8 VARIANT_BOOL FAR* pboolVal; VT_BYREF|VT_BOOL SCODE FAR* pscode; VT_BYREF|VT_ERROR CY FAR* pcyVal; VT_BYREF|VT_CY DATE FAR* pdate; VT_BYREF|VT_DATE BSTR FAR* pbstrVal; VT_BYREF|VT_BSTR IUnknown FAR* FAR* ppunkVal; VT_BYREF|VT_UNKNOWN IDispatch FAR* FAR* ppdispVal; VT_BYREF|VT_DISPATCH SAFEARRAY FAR* FAR* pparray; VT_ARRAY|* VARIANT FAR* pvarVal; VT_BYREF|VT_VARIANT void FAR* byref; VT_BYREF _variant_t是VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。 例如: long l=222; ing i=100; _variant_t lVal(l); lVal = (long)i; COleVariant的使用与_variant_t的方法基本一样,请参考如下例子: COleVariant v3 = 字符串, v4 = (long)1999; CString str =(BSTR)v3.pbstrVal; long i = v4.lVal; 七、其它 对消息的处理中我们经常需要将WPARAM或LPARAM等32位数据(DWORD)分解成两个16位数据(WORD),例如: LPARAM lParam; WORD loValue = LOWORD(lParam);/取低16位 WORD hiValue = HIWORD(lParam);/取高16位 对于16位的数据(WORD)我们可以用同样的方法分解成高低两个8位数据(BYTE),例如: WORD wValue; BYTE loValue = LOBYTE(wValue);/取低8位 BYTE hiValue = HIBYTE(wValue);/取高8位 =unsigned char单字节0255signed char单字节-128+127unsigned int双字节065535signed int双字节-32768+32767unsigned long四字节04294967295signed long四字节-2147483648+2147483647float四字节1.175494E-383.402823E+38c+ 基本数据类型长度(vc6.0 32位机;字节为单位size of int is: 4size of char is: 1size of short int is: 2size of double is: 8size of unsigned int is: 4size of float is: 4size of long double is: 8size of long int is: 4size of long int is: 4size of unsigned char is: 1size of signed char is: 1size of unsigned long int is: 4size of signed int is: 4size of unsigned short int is: 2size of signed short int is: 2size of signed int is: 4size of signed long int is: 4sizeof 指针 is 4;再细致和规范点1、 字符型char:一个字节表示,通常表示单个字符或小整数,字符型常量用一对单引号 夹着一个字符表示。(1)可打印字符常量表示:a 2 , 字符常量在内存中的存储格式依赖于ASC码表的。(2)不可打印字符常量,通过斜杠“”表示:n 换行符 反斜杠 t 水平制表符 0 空(NULL)字符2、 整型int:一个机器字长度的整数值。 (这个概念很重要!不是定长,而是机器决定)短整型short:半个机器字长度的整数值。长整型long:一个或两个机器字长度的整数值。在32位机器中,int和long通常相同。(1)上面提到的char字符型,也可看作长度为一个字节的字符型整数。常用的部分 Windows 数据类型 WORD 16位无符号整数 LONG 32位有符号整数 DWORD 32位无符号整数 HANDLE句柄 32位整数UINT 32位无符号整数 BOOL 布尔 LPTSTR 指向字符串的32位指针 LPCTSTR 指向字符串常量的32位指针HPARAM 32位消息参数 intLPARAM 32位消息参数 intWPARAM 32位消息参数 int HINSTANCE 实例句柄 intHDC 设备描述表句柄 i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论