当前位置:文档之家› tagVARIANT数据类型操作详解

tagVARIANT数据类型操作详解

tagVARIANT数据类型操作详解
tagVARIANT数据类型操作详解

struct tagVARIANT {

union {

struct __tagVARIANT {

VARTYPE vt;

WORD wReserved1;

WORD wReserved2;

WORD wReserved3;

union {

ULONGLONG ullVal; /* VT_UI8 */

LONGLONG llVal; /* VT_I8 */

LONG lVal; /* VT_I4 */

BYTE bVal; /* VT_UI1 */

SHORT iVal; /* VT_I2 */

FLOAT fltVal; /* VT_R4 */

DOUBLE dblVal; /* VT_R8 */

VARIANT_BOOL boolVal; /* VT_BOOL */

_VARIANT_BOOL bool; /* (obsolete) */

SCODE scode; /* VT_ERROR */

CY cyVal; /* VT_CY */

DATE date; /* VT_DATE */

BSTR bstrVal; /* VT_BSTR */

IUnknown * punkVal; /* VT_UNKNOWN */

IDispatch * pdispVal; /* VT_DISPATCH */

SAFEARRAY * parray; /* VT_ARRAY */

BYTE * pbVal; /* VT_BYREF|VT_UI1 */

SHORT * piVal; /* VT_BYREF|VT_I2 */

LONG * plVal; /* VT_BYREF|VT_I4 */

LONGLONG * pllVal; /* VT_BYREF|VT_I8 */

FLOAT * pfltVal; /* VT_BYREF|VT_R4 */

DOUBLE * pdblVal; /* VT_BYREF|VT_R8 */

VARIANT_BOOL *pboolVal; /* VT_BYREF|VT_BOOL */

_VARIANT_BOOL *pbool; /* (obsolete) */

SCODE * pscode; /* VT_BYREF|VT_ERROR */

CY * pcyVal; /* VT_BYREF|VT_CY */

DATE * pdate; /* VT_BYREF|VT_DATE */

BSTR * pbstrVal; /* VT_BYREF|VT_BSTR */

IUnknown ** ppunkVal; /* VT_BYREF|VT_UNKNOWN */

IDispatch ** ppdispVal; /* VT_BYREF|VT_DISPATCH */

SAFEARRAY ** pparray; /* VT_BYREF|VT_ARRAY */

VARIANT * pvarVal; /* VT_BYREF|VT_VARIANT */

PVOID byref; /* Generic ByRef */

CHAR cVal; /* VT_I1 */

USHORT uiVal; /* VT_UI2 */

ULONG ulVal; /* VT_UI4 */

INT intVal; /* VT_INT */

UINT uintVal; /* VT_UINT */

DECIMAL * pdecVal; /* VT_BYREF|VT_DECIMAL */

CHAR * pcVal; /* VT_BYREF|VT_I1 */

USHORT * puiVal; /* VT_BYREF|VT_UI2 */

ULONG * pulVal; /* VT_BYREF|VT_UI4 */

ULONGLONG * pullVal; /* VT_BYREF|VT_UI8 */

INT * pintVal; /* VT_BYREF|VT_INT */

UINT * puintVal; /* VT_BYREF|VT_UINT */

struct __tagBRECORD {

PVOID pvRecord;

IRecordInfo * pRecInfo;

} __VARIANT_NAME_4; /* VT_RECORD */ } __VARIANT_NAME_3;

} __VARIANT_NAME_2;

DECIMAL decVal;

} __VARIANT_NAME_1;

};

C语言中的整型数据类型转换以及格式化输出问题

C语言中的整型数据类型转换以及格式化输出问题 先附上两张图片 i. Printf()函数的格式转换参数 ii. 各数据类型的长度和表示范围 首先我们来谈整型数据的转换问题,不同类型的整型数据所占的字节数不同,在转换时需要格外留心。 分为两种情况: 第一种情况为将所占字节大的类型数据转换为所占字节小的类型数据,这种情况下只需要截取合适位数的大字节的类型数据到小字节类型数据中即可,例如:unsigned short a=256;char b=a; 则b中的数据为00000000,截取了a的低八位。 第二种情况为将所占字节小的类型数据转换为所占字节大的类型数据,这种情况下需要涉及到扩展问题,所谓扩展分为两种情况,当需要扩展的小类型数据为有符号数时,即将过小数据的最高位即符号位复制到扩展的位上,比如一个char类型的数据char a=128,二进制表示10000000,则将其转换为整型数据b即int b=a,相应的b即为1….10000000,又或者一个char类型数据127,二进制表示01111111,则将其转换为整型数据b相应的b即为0…. 01111111;当需扩展的小类型数据为无符号数时,扩展位为全部为0。 另外对于同等大小的不同数据类型之间转换,则是相应的二进制码全额复制。 下面我们来讨论%d和%u的格式化输出问题 我们都知道%d表示输出十进制有符号整数,然而很少有人会注意到%d表示的格式类型其实相当于int类型,即有符号整型数据,占用4个字节,最高位表示符号位,输出的范围在-2147483648到2147483647间。 当我们在用%d输出数据是需要注意类型间的转换问题的。 不同类型的整型数据所占的字节数不同,在转换时需要格外留心,因为%d表示的4字节数

C语言关键字共32个

由ANSI标准定义的C语言关键字共32个: auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if while static 根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两大类。 1数据类型关键字 A.基本数据类型(5个) void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果 char:字符型类型数据,属于整型数据的一种 int:整型数据,通常为编译器指定的机器字长 float:单精度浮点型数据,属于浮点数据的一种 double:双精度浮点型数据,属于浮点数据的一种 B.类型修饰关键字(4个) short:修饰int,短整型数据,可省略被修饰的int。 long:修饰int,长整形数据,可省略被修饰的int。 signed:修饰整型数据,有符号数据类型 unsigned:修饰整型数据,无符号数据类型 C.复杂类型关键字(5个) struct:结构体声明 union:共用体声明 enum:枚举声明 typedef:声明类型别名 sizeof:得到特定类型或特定类型变量的大小 D.存储级别关键字(6个) auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配 static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部 register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数 extern:指定对应变量为外部变量,即标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变) volatile:与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值 2流程控制关键字

Java中几种常用的数据类型之间转换方法

Java中几种常用的数据类型之间转换方法:1.短整型-->整型 如: short shortvar=0; int intvar=0; shortvar= (short) intvar 2.整型-->短整型 如: short shortvar=0; int intvar=0; intvar=shortvar; 3.整型->字符串型 如: int intvar=1; String stringvar; Stringvar=string.valueOf (intvar); 4.浮点型->字符串型 如: float floatvar=9.99f; String stringvar; Stringvar=String.valueOf (floatvar); 5.双精度型->字符串型 如: double doublevar=99999999.99; String stringvar; Stringvar=String.valueOf (doublevar); 6. 字符型->字符串型 如:char charvar=’a’; String stringvar;

Stringvar=String.valueOf (charvar); 7字符串型->整型、浮点型、长整型、双精度型如:String intstring=”10”; String floatstring=”10.1f”; String longstring=”99999999”; String doubleString=”99999999.9”; Int I=Integer.parseInt (intstring); Float f= Integer.parseInt (floatstring); Long lo=long. parseInt (longstring); Double d=double. parseInt (doublestring); 8字符串型->字节型、短整型 如:String s=”0”; Byte b=Integer.intValue(s); Short sh=Integer.intValue(s); 9字符串型->字符型 如: String s=”abc”; Char a=s.charAt(0); 10字符串型-->布尔型 String s=”true”; Boolean flag=Boolean.valueOf (“s”);

c语言数据类型关键字

1 数据类型关键字(12个): (1) char :声明字符型变量或函数 (2) double :声明双精度变量或函数 (3) enum :声明枚举类型 (4) float:声明浮点型变量或函数 (5) int:声明整型变量或函数 (6) long :声明长整型变量或函数 (7) short :声明短整型变量或函数 (8) signed:声明有符号类型变量或函数 (9) struct:声明结构体变量或函数 (10) union:声明联合数据类型 (11) unsigned:声明无符号类型变量或函数 (12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)(2)控制语句关键字(12个): A循环语句 (1) for:一种循环语句(可意会不可言传) (2) do :循环语句的循环体 (3) while :循环语句的循环条件 (4) break:跳出当前循环 (5) continue:结束当前循环,开始下一轮循环 B条件语句 (1)if: 条件语句 (2)else :条件语句否定分支(与if 连用) (3)goto:无条件跳转语句 C开关语句 (1)switch :用于开关语句 (2)case:开关语句分支 (3)default:开关语句中的“其他”分支 D return :子程序返回语句(可以带参数,也看不带参数) 3 存储类型关键字(4个) (1)auto :声明自动变量一般不使用 (2)extern:声明变量是在其他文件正声明(也可以看做是引用变量) (3)register:声明积存器变量 (4)static :声明静态变量 4 其它关键字(4个): (1)const :声明只读变量 (2)sizeof:计算数据类型长度 (3)typedef:用以给数据类型取别名(当然还有其他作用 (4)volatile:说明变量在程序执行中可被隐含地改变

C语言的基本数据类型及其表示

3.2 C语言的基本数据类型及其表示 C语言的基本数据类型包括整型数据、实型数据和字符型数据,这些不同数据类型如何表示?如何使用?它们的数据范围是什么?下面我们分别进行介绍。 3.2.1 常量与变量 1. 常量 常量是指程序在运行时其值不能改变的量,它是C语言中使用的基本数据对 象之一。C语言提供的常量有: 以上是常量所具有的类型属性,这些类型决定了各种常量所占存储空间的大小和数的表示范围。在C程序中,常量是直接以自身的存在形式体现其值和类型,例如:123是一个整型常量,占两个存储字节,数的表示范围是-32768~32767;123.0是实型常量,占四个存储字节,数的表示范围是-3.4 10-38~3.4 1038。 需要注意的是,常量并不占内存,在程序运行时它作为操作对象直接出现在运算器的各种寄存器中。 2.符号常量 在C程序中,常量除了以自身的存在形式直接表示之外,还可以用标识符来表示常量。因为经常碰到这样的问题:常量本身是一个较长的字符序列,且在程序中重复出现,例如:取常数的值为3.1415927,如果在程序中多处出现,直接使用3.1415927的表示形式,势必会使编程工作显得繁琐,而且,当需要把的值修改为3.1415926536时,就必须逐个查找并修改,这样,会降低程序的可修改性和灵活性。因此,C语言中提供了一种符号常量,即用指定的标识符来表示某个常量,在程序中需要使用该常量时就可直接引用标识符。 C语言中用宏定义命令对符号常量进行定义,其定义形式如下: #define 标识符常量 其中#define是宏定义命令的专用定义符,标识符是对常量的命名,常量可以是前面介绍的几种类型常量中的任何一种。该使指定的标识符来代表指定的常量,这个被指定的标识符就称为符号常量。例如,在C程序中,要用PAI代表实型常量3.1415927,用W代表字符串常量"Windows 98",可用下面两个宏定义命令: #define PAI 3.1415927 #define W "Windows 98" 宏定义的功能是:在编译预处理时,将程序中宏定义(关于编译预处理和宏定义的概念详见9.10节)命令之后出现的所有符号常量用宏定义命令中对应的常量一一替代。例如,对于以上两个宏定义命令,编译程序时,编译系统首先将程序中除这两个宏定义命令之外的所有PAI替换为3.1415927,所有W替换为Windows 98。因此,符号常量通常也被称为宏替换名。 习惯上人们把符号常量名用大写字母表示,而把变量名用小写字母表示。例3-1是符号常量的一个简单的应用。其中,PI为定义的符号常量,程序编译时,用3.1416替换所有的PI。 例3-1:已知圆半径r,求圆周长c和圆面积s的值。

C语言的基本数据类型及其表示

3.2C语言的基本数据类型及其表示 C语言的基本数据类型包括整型数据、实型数据和字符型数据,这些不同数据类型如何表示?如何使用?它们的数据范围是什么?下面我们分别进行介绍。 3.2.1常量与变量 1.常量 常量是指程序在运行时其值不能改变的量,它是C语言中使用的基本数据对 象之一。C语言提供的常量有: 以上是常量所具有的类型属性,这些类型决定了各种常量所占存储空间的大小和数的表示范围。在C程序中,常量是直接以自身的存在形式体现其值和类型,例如:123是一个整型常量,占两个存储字节,数的表示范围是-32768~32767;123.0是实型常量,占四个存储字节,数的表示范围是-3.410-38~3.41038。 需要注意的是,常量并不占内存,在程序运行时它作为操作对象直接出现在运算器的各种寄存器中。 2.符号常量 在C程序中,常量除了以自身的存在形式直接表示之外,还可以用标识符来表示常量。因为经常碰到这样的问题:常量本身是一个较长的字符序列,且在程序中重复出现,例如:取常数的值为3.1415927,如果在程序中多处出现,直接使用3.1415927的表示形式,势必会使编程工作显得繁琐,而且,当需要把的值修改为3.1415926536时,就必须逐个查找并修改,这样,会降低程序的可修改性和灵活性。因此,C语言中提供了一种符号常量,即用指定的标识符来表示某个常量,在程序中需要使用该常量时就可直接引用标识符。 C语言中用宏定义命令对符号常量进行定义,其定义形式如下: #define标识符常量 其中#define是宏定义命令的专用定义符,标识符是对常量的命名,常量可以是前面介绍的几种类型常量中的任何一种。该使指定的标识符来代表指定的常量,这个被指定的标识符就称为符号常量。例如,在C程序中,要用PAI代表实型常量3.1415927,用W代表字符串常量"Windows98",可用下面两个宏定义命令: #define PAI3.1415927 #define W"Windows98" 宏定义的功能是:在编译预处理时,将程序中宏定义(关于编译预处理和宏定义的概念详见9.10节)命令之后出现的所有符号常量用宏定义命令中对应的常量一一替代。例如,对于以上两个宏定义命令,编译程序时,编译系统首先将程序中除这两个宏定义命令之外的所有PAI替换为3.1415927,所有W替换为Windows98。因此,符号常量通常也被称为宏替换名。 习惯上人们把符号常量名用大写字母表示,而把变量名用小写字母表示。例3-1是符号常量的一个简单的应用。其中,PI为定义的符号常量,程序编译时,用3.1416替换所有的PI。 例3-1:已知圆半径r,求圆周长c和圆面积s的值。

C语言数据类型及表示范围

C语言各种数据类型在系统中占的字节和取值围 基本类型包括字节型(char)、整型(int)和浮点型(float/double)。 定义基本类型变量时,可以使用符号属性signed、unsigned(对于char、int),和长度属性short、long(对于int、double)对变量的取值区间和精度进行说明。 下面列举了Dev-C++下基本类型所占位数和取值围: 符号属性长度属性基本型所占位数取值围输入符举例输出符举例-- -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u signed -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u unsigned -- char 8 0 ~ 2^8-1 %c %c、%d、%u [signed] short [int] 16 -2^15 ~ 2^15-1 %hd unsigned short [int] 16 0 ~ 2^16-1 %hu、%ho、%hx [signed] -- int 32 -2^31 ~ 2^31-1 %d unsigned -- [int] 32 0 ~ 2^32-1 %u、%o、%x [signed] long [int] 32 -2^31 ~ 2^31-1 %ld unsigned long [int] 32 0 ~ 2^32-1 %lu、%lo、%lx [signed] long long [int] 64 -2^63 ~ 2^63-1 %I64d unsigned long long [int] 64 0 ~ 2^64-1 %I64u、%I64o、%I64x -- -- float 32 +/- 3.40282e+038 %f、%e、%g -- -- double 64 +/- 1.79769e+308 %lf、%le、%lg %f、%e、%g -- long double 96 +/- 1.79769e+308 %Lf、%Le、%Lg 几点说明: 1. 注意! 表中的每一行,代表一种基本类型。“[]”代表可省略。 例如:char、signed char、unsigned char是三种互不相同的类型; int、short、long也是三种互不相同的类型。可以使用C++的函数重载特性进行验证,如: void Func(char ch) {} void Func(signed char ch) {} void Func(unsigned char ch) {} 是三个不同的函数。

C语言的32个关键字和9种控制语句

C语言的32个关键字和9种控制语句 C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。 1 数据类型关键字(12个): (1) char :声明字符型变量或函数 (2) double :声明双精度变量或函数 (3) enum :声明枚举类型 (4) float:声明浮点型变量或函数 (5) int:声明整型变量或函数 (6) long :声明长整型变量或函数 (7) short :声明短整型变量或函数 (8) signed:声明有符号类型变量或函数 (9) struct:声明结构体变量或函数 (10) union:声明共用体(联合)数据类型 (11) unsigned:声明无符号类型变量或函数 (12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用) 2控制语句关键字(12个): A循环语句 (1) for:一种循环语句(可意会不可言传) (2) do :循环语句的循环体 (3) while :循环语句的循环条件 (4) break:跳出当前循环 (5) continue:结束当前循环,开始下一轮循环 B条件语句 (1)if: 条件语句 (2)else :条件语句否定分支(与if 连用) (3)goto:无条件跳转语句 C开关语句 (1)switch :用于开关语句 (2)case:开关语句分支 (3)default:开关语句中的“其他”分支 D返回语句 return :子程序返回语句(可以带参数,也看不带参数) 3 存储类型关键字(4个) (1)auto :声明自动变量一般不使用 (2)extern:声明变量是在其他文件正声明(也可以看做是引用变量)

c各种数据类型之间相互转化

⑴. char *转换到BSTR BSTR b = _com_util::ConvertStringToBSTR("数据"); SysFreeString(bstrValue); (2).BSTR转换到char* char *p=_com_util::ConvertBSTRToString(b); delete p; 12.typedef和typename要害字 这两个要害字在运用的时辰时例会令人迷惑,其实很简单,typedef是类型定义, 而typename是类型解释2009年04月20日 类型转换是将一种类型的值映射为另一种类型的值进行数据类型的转换 是在实际代码编写中经常遇到的问题,出格是字符串和其它类型的转换 1.将字符串转换为整儿 (1).转换函数 // 双精度函数 double atof( const char *string ); double _wtof( const wchar_t *string ); 自适应 TCHAR:_tstof 、_ttof VS2005:_atof_l 、_wtof_l 、_atodbl 、_atodbl_l // 整型函数 int atoi( const char *string ); _int64 _atoi64( const char *string ); int _wtoi( const wchar_t *string ); _int64 _ wtoi64( const char *string ); 自适应 TCHAR:_tstoi 、_ttoi 、_tstoi64 、_ttoi64 VS2005:_atoi_l 、_wtoi_l 、_atoi64_l 、_wtoi64_l //长整形函数 long atol( const char * string ); long _wtol(

C语言数据类型与表达式习题及答案

第一章数据类型,运算符与表达式 一.选择题 1.不合法的常量是A。 A)‘/2’B) “”C)‘’D)“483” 2. B 是C语言提供的合法的数据类型关键字。 A)Float B)signed C)integer D)Char 3.在以下各组标识符中,合法的标识符是(1)A,(2) C ,(3) D 。 (1)A)B01 B)table_1 C)0_t D)k% Int t*.1 W10 point (2)A)Fast_ B)void C)pbl D) Fast+Big abs fabs beep (3)A)xy_ B)longdouble C)*p D)CHAR 变量1 signed history Flaut 4. 不属于合法的C语言长整型常量的是 C 。 A)5876273 B)0L C)2E10 D)(long)5876273 7.下面选项中,均是合法浮点数的是 B 。 A)+1e+1 B)-0.60 C)123e D)-e3 5e-9.4 12e-4 1.2e-.4 .8e-4 03e2 -8e5 +2e-1 5.e-0 8.在C语言中,要求参加运算的数必须是整数的运算符是 C 。 A)/ B)* C)% D) = 9.在C语言中,字符型数据在内存中以 D 形式存放。 A)原码B)BCD码C)反码D)ASCII码10.下列语句中,符合语法的赋值语句是 C 。 A)a=7+b+c=a+7;B)a=7+b++=a+7; C)a=7+b,b++,a+7;D)a=7+b = c=a+7; 11. B 是非法的C语言转义字符。 A)‘\b’B)‘\0xf’C)‘\037’D)‘\’’12.对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中, B 是正确的。 A)语法错误B)f为5.0 C)f为0.0 D)f为2.0 13.与代数式x y u v ? ? 不等价的C语言表达式是A。 A)x*y/u*v B)x*y/u/v C)x*y/(u*v) D)x/(u*v)*y 14.在C语言中,数字029是一个 D 。 A)八进制数B)十六进制数C)十进制数D)非法数 16.对于char cx=?\039?;语句,正确的是A。 A)不合法B)cx的值是?\03? C)cx的值为四个字符D)cx的值为三个字符 17.若int k=7,x=12;则能使值为3的表达式是 D 。 A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5) 18.为了计算s=10!(即10的阶乘),则s变量应定义为 C 。 A)int B)unsigned C)long D)以上三种类型均可

C语言基本数据类型及运算题库

第二章基本数据类型及运算 一、选择题 1. 若以下选项中的变量已正确定义,则正确的赋值语句是。 A) x1=26.8%3; B) 1+2=x2; C) x3=0x12; D) x4=1+2=3; 答案:C 2. 设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是。 A) x=x*100+0.5/100.0 B) x=(x*100+0.5)/100.0 C) x=(int)(x*100+0.5)/100.0 D) x=(x/100+0.5)*100.0 答案:C 3. 下列C语言中运算对象必须是整型的运算符是。 A) %= B) / C) = D) *= 答案:A 4. 若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是。 A) 0 B) 0.5 C) 1 D) 2 答案:A 5. 设x和y均为int型变量,则以下语句:x+=y; y=x-y; x-=y; 的功能是。 A) 把x和y按从大到小排列 B) 把x和y按从小到大排列 C) 无确定结果 D) 交换x和y中的值 答案:D 6. 下列变量定义中合法的是。 A)short_a=1-.le-1; B)double b=1+5e2.5; C)long do=0xfdaL; D)float 2_and=1-e-3; 答案:A 7. 以下4个选项中,不能被看作是一条语句的是。 A) {;} B) a=0,b=0,c=0; C) if (a>0); D) if (b==0)m=1;n=2; 答案:D 8. 设x=1,y=-1,下列表达式中解为8的是。 A)x&y B)~x│x C)x^x D)x<<=3 答案:D 9. 在C语言中不合法的整数是。 A)20 B)0x4001 C)08 D)0x12ed 答案: C 10. 以下选项中不正确的实型常量是 A)2.607E-1 B)0.8103e0.2 C)-77.77 D)456e –2 答案:B) 11.若变量已正确定义并赋值,符合C语言语法的表达式是 A)a=a+7 B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b 答案:B) 12.以下十六进制数中不合法的是 A)oxff B)0Xabc C)0x11 D)0x19

c语言关键字及常用符号

C语言关键字及常用符号 32个关键字 auto :声明自动变量 short :声明短整型变量或函数 int:声明整型变量或函数 long :声明长整型变量或函数 float:声明浮点型变量或函数 double :声明双精度变量或函数 char :声明字符型变量或函数 struct:声明结构体变量或函数 union:声明共用数据类型 enum :声明枚举类型 typedef:用以给数据类型取别名 const :声明只读变量 unsigned:声明无符号类型变量或函数 signed:声明有符号类型变量或函数 extern:声明变量是在其他文件中声明 register:声明寄存器变量 static :声明静态变量 volatile:说明变量在程序执行中可被隐含地改变 void :声明函数无返回值或无参数,声明无类型指针 if:条件语句 else :条件语句否定分支(与 if 连用) switch :用于开关语句 case:开关语句分支 for:一种循环语句 do :循环语句的循环体 while :循环语句的循环条件 goto:无条件跳转语句 continue:结束当前循环,开始下一轮循环 break:跳出当前循环 default:开关语句中的“其他”分支 sizeof:计算数据类型长度 return :子程序返回语句(可以带参数,也可不带参数)循环条件 数据类型 char:字符型 int:基本整型 short int:短整型 long int:长整型

unsigned:无符号型 unsigned long:无符号长整型 float:单精度实型 double:双精度实型 C语言常用转义字符表 转义字符含义ASCII码(16/10进制) \o 空字符(NULL) 00H/0 \n 换行符(LF) 0AH/10 \r 回车符(CR) 0DH/13 \t 水平制表符(HT) 09H/9 \v 垂直制表(VT) 0B/11 \a 响铃(BEL) 07/7 \b 退格符(BS) 08H/8 \f 换页符(FF) 0CH/12 \’单引号27H/39 \”双引号22H/34 \\ 反斜杠5CH/92 \? 问号字符3F/63 \ddd 任意字符三位八进制 \xhh 任意字符二位十六进制 字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在这些字符前加上反斜杠。 在C程序中使用转义字符\ d d d或者\ x h h可以方便灵活地表示任意字符。C语言的运算符可分为以下几类: 算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。 关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。 逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。 位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。 赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。 条件运算符:这是一个三目运算符,用于条件求值(?:)。

C语言数据类型及转换

C语言的数据类型 C语言提供的数据结构,是以数据类型形式出现的。具体分类如下: 1.基本类型 分为整型、实型(又称浮点型)、字符型和枚举型四种。 2.构造类型 分为数组类型、结构类型和共用类型三种。 3.指针类型。在第9章中介绍。 4.空类型 C语言中的数据,有常量和变量之分,它们分别属于上述这些类型。 本章将介绍基本类型中的整型、实型和字符型三种数据。 2.3 常量和变量 2.3.1 常量 1.常量的概念 在程序运行过程中,其值不能被改变的量称为常量。 2.常量的分类 (1)整型常量 (2)实型常量 (3)字符常量。 (4)符号常量。 常量的类型,可通过书写形式来判别。 2.3.2 变量 1.变量的概念 在程序运行过程中,其值可以被改变的量称为变量。 2.变量的两个要素 (1)变量名。每个变量都必须有一个名字──变量名,变量命名遵循标识符命名规则。(2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。 3.标识符命名规则 (1)有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。 (2)有效长度:随系统而异,但至少前8个字符有效。如果超长,则超长部分被舍弃。 例如,由于student_name和student_number的前8个字符相同,有的系统认为这两个变量,是一回事而不加区别。 在TC V2.0中,变量名(标识符)的有效长度为1~32个字符,缺省值为32。 (3)C语言的关键字不能用作变量名。 注意:C语言对英文字母的大小敏感,即同一字母的大小写,被认为是两个不同的字符。 习惯上,变量名和函数名中的英文字母用小写,以增加可读性。 思考题:在C语言中,变量名total与变量名TOTAL、ToTaL、tOtAl等是同一个变量吗?标识符命名的良好习惯──见名知意: 所谓“见名知意”是指,通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。 例如,name/xm(姓名)、sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。 4.变量的定义与初始化 在C语言中,要求对所有用到的变量,必须先定义、后使用;且称在定义变量的同时进行赋初值的操作为变量初始化。

数据类型转换

数据类型转换 各类整数之间的转换 C语言中的数分8位、16位和32位三种。属于8 位数的有:带符号 字符char,无符号字符unsigned char 。属于16位数的有:带符号整 数int,无符号整数unsigned int(或简写为unsigned),近指针。属 于32位数的有:带符号长整数long,无符号长整数 unsigned long, 远指针。 IBM PC是16位机,基本运算是16位的运算,所以,当8位数和16 位数进行比较或其它运算时,都是首先把8 位数转换成16位数。为了 便于按2的补码法则进行运算,有符号8位数在转换为16位时是在左边 添加8个符号位,无符号8位数则是在左边添加8个0。当由16位转换成 8位时,无论什么情况一律只是简单地裁取低8位,抛掉高8 位。没有 char或usigned char常数。字符常数,像"C",是转换为int以后存储 的。当字符转换为其它 16 位数(如近指针)时,是首先把字符转换为 int,然后再进行转换。 16位数与32位数之间的转换也遵守同样的规则。 注意,Turbo C中的输入/输出函数对其参数中的int和unsigned int不加区分。例如,在printf函数中如果格式说明是%d 则对这两种 类型的参数一律按2 的补码(即按有符号数)进行解释,然后以十进制 形式输出。如果格式说明是%u、%o、%x、%X,则对这两种类型的参数 一律按二进制 (即按无符号数) 进行解释,然后以相应形式输出。在 scanf函数中,仅当输入的字符串中含有负号时,才按2的补码对输入 数进行解释。 还应注意,对于常数,如果不加L,则Turbo C一般按int型处理。 例如,语句printf("%081x",-1L),则会输出ffffffff。如果省略1, 则输出常数的低字,即ffff。如果省略L,则仍会去找1个双字,这个 双字的就是int常数-1,高字内容是不确定的,输出效果将是在4个乱 七八糟的字符之后再跟ffff。 在Turbo C的头文件value.h中,相应于3 个带符号数的最大值, 定义了3个符号常数: #define MAXSHORT 0X7FFF #define MAXINT 0X7FFF #define MAXLONG 0X7FFFFFFFL 在Turbo C Tools中,包括3对宏,分别把8位拆成高4位和低4位, 把16位拆成高8位和低8位,把32位拆成高16位和低16位。 uthinyb(char value) utlonyb(char value) uthibyte(int value) utlobyte(int value) uthiword(long value) utloword(long valueu) 在Turbo C Tools中,也包括相反的3 个宏,它们把两个4位组成 一个8位,把两个8位组成一个16位,把两个16位组成一个32位。 utnybbyt(HiNyb,LoNyb) utwdlong(HiWord,Loword) utbyword(HiByte,LoByte)实数与整数之间的转换 Turbo C中提供了两种实数:float和 double。float 由32 位组 成,由高到低依次是:1个尾数符号位,8个偏码表示的指数位(偏值= 127),23个尾数位。double由64位组成,由高到低依次是:1 个尾数

C语言基本数据类型简介

C语言基本数据类型简介 1.概述 C 语言包含的数据类型如下图所示: 2.各种数据类型介绍 2.1整型 整形包括短整型、整形和长整形。 2.1.1短整形 short a=1; 2.1.2整形 一般占4个字节(32位),最高位代表符号,0表示正数,1表示负数,取值围是 -2147483648~2147483647,在存中的存储顺序是地位在前、高位在后,例如0x12345678在存中的存储如下: 地址:0x0012ff780x0012ff790x0012ff7a0x0012ff7b 数据:78563412 定义:用int关键字,举例如下: int a=6; 2.1.3长整形 long a=10; 2.2浮点型 浮点型包括单精度型和双精度型。 2.2.1单精度型 浮点型,又称实型,也称单精度。一般占4个字节(32位), float a=4.5; 地址:0x0012ff780x0012ff790x0012ff7a0x0012ff7b 数据:00009040 2.2.2双精度型 一般占8个字节(64位) double a=4.5;

地址:0x0012ff780x0012ff790x0012ff7a0x0012ff7b0x0012ff7c 0x0012ff7d0x0012ff7e0x0012ff7f 数据:0000000000 001240 2.3字符类型 在各种不同系统中,字符类型都占一个字节(8位)。定义如下: char c='a'; 也可以用字符对应的ASCII码赋值,如下: char c=97; 3.数据类型与“模子” short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。 怎么去理解它们呢? 举个例子:见过藕煤球的那个东西吧?(没见过?煤球总见过吧)。那个东西叫藕煤器,拿着它在和好的煤堆里这么一咔,一个煤球出来了。半径12cm,12 个孔。不同型号的藕煤器咔出来的煤球大小不一样,孔数也不一样。这个藕煤器其实就是个模子。 现在我们联想一下,short、int、long、char、float、double 这六个东东是不是很像不同类型的藕煤器啊?拿着它们在存上咔咔咔,不同大小的存就分配好了,当然别忘了给它们取个好听的名字。 在32 位的系统上 short 短整型的存2 byte; int 整型的存4 byte; long 长整型的存4 byte; float 单精度浮点型的存4byte;仅能接收7位有效数字 double 双精度浮点型的存8 byte;可以接收16位有效数字 char字符型的存1 byte。 fabs单精度浮点型存4byte. (注意这里指一般情况,可能不同的平台还会有所不同,具体平台可以用sizeof 关键字测试一下) 很简单吧?咔咔咔很爽吧?是很简单,也确实很爽,但问题就是你咔出来这么多存块,你总不能

C语言关键字(详细)

auto:声明自动变量 struct:声明结构体变量或函数 union:声明共用数据类型 enum:声明枚举类型 typedef:用以给数据类型取别名 const:声明只读变量 extern:声明变量是在其他文件中声明register:声明寄存器变量 static:声明静态变量 volatile:说明变量在程序执行中可被隐含地改变goto:无条件跳转语句 short:声明短整型变量或函数 int:声明整型变量或函数 long:声明长整型变量或函数 float:声明浮点型变量或函数 double:声明双精度变量或函数 char:声明字符型变量或函数 unsigned:声明无符号类型变量或函数 signed:声明有符号类型变量或函数 void:声明函数无返回值或无参数,声明无类型指针 if:条件语句 else:条件语句否定分支(与if连用) switch:用于开关语句 case:开关语句分支 for:一种循环语句 do:循环语句的循环体 while:循环语句的循环条件 continue:结束当前循环,开始下一轮循环 break:跳出当前循环 default:开关语句中的“其他”分支 sizeof:计算数据类型长度

return:子程序返回语句(可以带参数,也可不带参数)循环条件 1数据类型关键字(12个): (1)char:声明字符型变量或函数 (2)double:声明双精度变量或函数 (3)enum:声明枚举类型 (4)float:声明浮点型变量或函数 (5)int:声明整型变量或函数 (6)long:声明长整型变量或函数 (7)short:声明短整型变量或函数 (8)signed:声明有符号类型变量或函数 (9)struct:声明结构体变量或函数 (10)union:声明共用体(联合)数据类型 (11)unsigned:声明无符号类型变量或函数 (12)void:声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用) 2控制语句关键字(12个): A循环语句 (1)for:一种循环语句(可意会不可言传) (2)do:循环语句的循环体 (3)while:循环语句的循环条件 (4)break:跳出当前循环 (5)continue:结束当前循环,开始下一轮循环 B条件语句 (1)if:条件语句 (2)else:条件语句否定分支(与if连用) (3)goto:无条件跳转语句

C语言基本数据类型及运算题库1

基本数据类型及运算 一、选择题 1.若以下选项中的变量已正确定义,则正确的赋值语句是。 A)x1=26.8%3;B)1+2=x2;C)x3=0x12;D)x4=1+2=3; 答案:C 2.设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是。 A)x=x*100+0.5/100.0B)x=(x*100+0.5)/100.0 C)x=(int)(x*100+0.5)/100.0D)x=(x/100+0.5)*100.0 答案:C 3.下列C语言中运算对象必须是整型的运算符是。 A)%=B)/C)=D)*= 答案:A 4.若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是。 A)0B)0.5C)1D)2 答案:A 5.设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是。 A)把x和y按从大到小排列B)把x和y按从小到大排列 C)无确定结果D)交换x和y中的值 答案:D 6.下列变量定义中合法的是。 A)short_a=1-.le-1;B)double b=1+5e2.5; C)long do=0xfdaL;D)float2_and=1-e-3; 答案:A 7.以下4个选项中,不能被看作是一条语句的是。 A){;}B)a=0,b=0,c=0; C)if(a>0);D)if(b==0)m=1;n=2; 答案:D 8.设x=1,y=-1,下列表达式中解为8的是。 A)x&y B)~x│x C)x^x D)x<<=3 答案:D 9.在C语言中不合法的整数是。 A)20B)0x4001C)08D)0x12ed 答案:C 10.以下选项中不正确的实型常量是 A)2.607E-1B)0.8103e0.2C)-77.77D)456e–2 答案:B) 11.若变量已正确定义并赋值,符合C语言语法的表达式是 A)a=a+7B)a=7+b+c,a++ C)int(12.3%4)D)a=a+7=c+b 答案:B) 12.以下十六进制数中不合法的是 A)oxff B)0Xabc C)0x11D)0x19

C语言各种数值类型转换

C语言数据类型转换1 CString,int,string,char*之间的转换 string 转CString CString.format("%s", string.c_str()); char 转CString CString.format("%s", char*); char 转string string s(char *); string 转char * const char *p = string.c_str(); CString 转string string s(CString.GetBuffer()); 1,string -> CString CString.format("%s", string.c_str()); 用c_str()确实比data()要好. 2,char -> string string s(char *); 你的只能初始化,在不是初始化的地方最好还是用assign(). 3,CString -> string string s(CString.GetBuffer()); GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间. 《C++标准函数库》中说的 有三个函数可以将字符串的内容转换为字符数组和C—string 1.data(),返回没有”\0“的字符串数组 2,c_str(),返回有”\0“的字符串数组 3,copy() CString互转int 将字符转换为整数,可以使用atoi、_atoi64或atol。 而将数字转换为CString变量,可以使用CString的Format函数。如 CString s; int i = 64; s.Format("%d", i) Format函数的功能很强,值得你研究一下。

相关主题
文本预览
相关文档 最新文档