用户标识符应做到见名知意 3.c语言的数据类型 在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型 四大类 1基本数据类型 基本数据类型最主要的特点是,其值不可以再分解为其它类型。也就是说,基本数 据类型是自我说明的。 2.构造数据类型 是根据已定义的一个或多个数据类型用构造的方法来定义的。也就是说,一个构造 类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或又是 个构造类型。在C语言中,构造类型有以下几种: 数组类型 结构类型 联合类型 3指针类型 指针是一种特殊的,同时又是具有重要作用的数据类型。其值用来表示某个量在内 存储器中的地址。虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量 因此不能混为一谈 4.空类型 在调用函数值时,通常应向调用者返回一个函数值。这个返回的函数值是具有一定 的数据类型的,应在函数定义及函数说明中给以说明。但是,也有一类函数,调用后并 不需要向调用者返回函数值,这种函数可以定义为“空类型”。其类型说明符为void 4.常量和变量 对于基本数据类型量,按其取值是否可改变又分为常量和变量两种。 (一)常量 概念:常量(即常数)是程序运行过程中值不可改变的量,它又分为直接常量和符号常 量。具体分为以下几类 1.普通整型常量 整型常量有三种表示形式 十进制数:123,-456,0 八进制数(0开头)0123即(123)s 十六制数(0x开头)0x123,即(123)6、0x2bf即(2b6 整型常量占2个字节 6
6 ⚫ 用户标识符应做到见名知意 3.c 语言的数据类型 在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型 四大类。 1.基本数据类型 基本数据类型最主要的特点是,其值不可以再分解为其它类型。也就是说,基本数 据类型是自我说明的。 2.构造数据类型 是根据已定义的一个或多个数据类型用构造的方法来定义的。也就是说,一个构造 类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或又是 一个构造类型。在 C 语言中,构造类型有以下几种: ·数组类型 ·结构类型 ·联合类型 3.指针类型 指针是一种特殊的,同时又是具有重要作用的数据类型。其值用来表示某个量在内 存储器中的地址。虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量, 因此不能混为一谈。 4.空类型 在调用函数值时,通常应向调用者返回一个函数值。这个返回的函数值是具有一定 的数据类型的,应在函数定义及函数说明中给以说明。但是,也有一类函数,调用后并 不需要向调用者返回函数值, 这种函数可以定义为“空类型”。其类型说明符为 void。 4.常量和变量 对于基本数据类型量,按其取值是否可改变又分为常量和变量两种。 (一)常量 概念:常量(即常数)是程序运行过程中值不可改变的量,它又分为直接常量和符号常 量。具体分为以下几类。 1.普通整型常量 ⚫ 整型常量 有三种表示形式 十进制数:123,-456,0 八进制数:(0 开头) 0123 即(123)8 十六制数:(0x 开头) 0x123,即 (123)16、0x2bf 即(2bf)16 ⚫ 整型常量 占 2 个字节
整型常量表示范围为-32768--32767即215-1 2.长整型常量在一个整数后加字母l或L则变成长整型常量 长整型常量占4个字节 ●长整型常量表示范围为231-1 3无符号整型常量: 个整型常量后加一个字母u或U则认为它是无符号整型数据。在内存中按无符 号整型规定的形式存放。如果是负数后加字母u或U则先把负数转换成补码,然后按 无符号数存储。例如:-12345u先将12345转换成补码53191,然后按无符号数存储。 4实型常量:又称浮点数 实型常量有两种表示形式:十进制小数表示形式和指数表示形式 十进制小数表示形式:由整数、小数点、和小数三部分组成,而且必须有小数点 例如0.123,0.23、45.0、3.67、0.0等 当小数部分或整数部分为0时0可以省略,但两部分不能同时省略。例如450可 以写成45.,0.23可以写成23。00可以写成0或0.。 指数形式:由尾数、E或e和指数三部分组成。例如1233或123E3(123×103 或1.23E5(1.23×105 注意 1、尾数和指数都不能省略。即e或E的前后必须有数字 例如:3.58e4是正确的表示形式。1.23e或e5都是错误的表示形式。 2、e或E后面的指数必须为整数。例如:2.34e4.5是错误的表示形式 3、小数点的前面有且只有一位非0的数字称为规范化的指数形式 例如:567e3 4、如果一个实数在用指数形式输出时,是按规范化的指数形式输出的。例如将5689.65 指定按指数形式输出会输出568965e+003或568965e+03 实型常量占8个字节64位按双精度方式处理 如果在实数的后面加字母f或F则系统会按单精度处理。如1.65f6 5字符常量:是一对单引号括起来的一个字符。如‘a 字符常量占一个字节 字符常量存储时存储的是字符的ASCI值 大小写是不同的字符常量。例如“A和a','C和c等是不同的字符常量 c语言还使用特殊形式的字符常量,就是以“”开头的字符序列,称为转义 字符。常用的转义字符如下: 回车换行,将光标移到下一行行首 横向跳格(跳到下一个输出区,一个输出区8列,下个输出区 到第9列) 退一格 车光标回到本行行首 走纸换页
7 ⚫ 整型常量表示范围为 -32768——32767 即 2 15 -1。 2.长整型常量 在一个整数后加字母 l 或 L 则变成长整型常量 ⚫ 长整型常量占 4 个字节 ⚫ 长整型常量表示范围为 2 31 -1 3.无符号整型常量: 一个整型常量后加一个字母 u 或 U 则认为它是无符号整型数据。在内存中按无符 号整型规定的形式存放。如果是负数后加字母 u 或 U 则先把负数转换成补码,然后按 无符号数存储。例如:-12345u 先将-12345 转换成补码 53191,然后按无符号数存储。 4.实型常量:又称浮点数 实型常量有两种表示形式:十进制小数表示形式和指数表示形式 十进制小数表示形式:由整数、小数点、和小数三部分组成,而且必须有小数点。 例如 0.123 ,0.23、45.0、3.67、0.0 等 当小数部分或整数部分为 0 时 0 可以省略,但两部分不能同时省略。例如 45.0 可 以写成 45. ,0.23 可以写成.23。0.0 可以写成.0 或 0.。 指数形式:由尾数、E 或 e 和指数三部分组成。例如 123e3 或 123E3(123 × 103 ) 或 1.23E5(1.23 × 105 ) 注意: 1、尾数和指数都不能省略。即 e 或 E 的前后必须有数字。 例如: 3.58e4 是正确的表示形式。1.23e 或 e5 都是错误的表示形式。 2、e 或 E 后面的指数必须为整数。例如 :2.34e4.5 是错误的表示形式。 3、小数点的前面有且只有一位非 0 的数字称为规范化的指数形式。 例如:5.67e3 4、如果一个实数在用指数形式输出时,是按规范化的指数形式输出的。例如将 5689.65 指定按指数形式输出会输出 5.68965e+003 或 5.68965e+03 ⚫ 实型常量占 8 个字节 64 位 按双精度方式处理 ⚫ 如果在实数的后面加字母 f 或 F 则系统会按单精度处理。如 1.65f。 5.字符常量:是一对单引号括起来的一个字符。如‘a’ 、‘A’、‘%’等。 ⚫ 字符常量占一个字节 ⚫ 字符常量存储时存储的是字符的 ASCII 值 ⚫ 大小写是不同的字符常量。例如 ‘A’和‘a’,’C’和‘c’等是不同的字符常量 ⚫ c 语言还使用特殊形式的字符常量,就是以“\”开头的字符序列,称为转义 字符。常用的转义字符如下: \n 回车换行,将光标移到下一行行首。 \t 横向跳格(跳到下一个输出区,一个输出区 8 列,下个输出区 到第 9 列) \b 回退一格 \r 回车 光标回到本行行首 \f 走纸换页
反斜线符" W"a 单引号符 鸣铃 输出双引号 1~3位八进制数所代表的字符 Xhh 1~2位十六进制数所代表的字符 义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。上述的 dd和whh正是为此而提出的。dd和hh分别为八进制和十六进制的ASCI 代码。如\101表示字符"A",102表示字母"B",34表示反斜线,x0A表示 换行等。 6.字符串常量:字符串常量是一对双引号括起来的字符序列。如“boy”、“ ABCDE”等。 每个字符串的结尾加一个字符串结束标志(“0)系统根据此标志判断字符 串是否结束。 0“是一个ASCI为0的字符是空操作符,由系统自动加到字符串的结 尾,不是人工操作。例“ china”实际内存中: china10 字符串常量所占的字节数是它的字符的个数加1。而字符串的长度是从第 个字符开始到第一个”\0之间的字符的个数。例如:“ qwert\0gs”的字节数 是9而长度为5 7符号常量 是用一个标识符标识一个常量。在使用过程中,这个标识符就代表了该常量。若程 序的开头有# define Pl3.1415926则PI即是符号常量,在程序中代表3.1415926 (二)变量: 概念:在程序执行过程中取值可变的量称为变量。它们可与数据类型结合起来分类。例 如,可分为整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量、枚举常 量、枚举变量。在程序中,常量是可以不经说明而直接引用的,而变量则必须先说明后 使用。 变量定义的形式:存储类型名类型标识符变量名1[=表达式1 变量名n= 表达式n 1.整形变量 (1)整形变量分类:基本型(int)、短整型( short[int)、长整形(long[in])、无符号 整形( unsigned int、 unsigned short、 unsigned long) ●基本型 类型说明符为int或 signed int,在内存中占2个字节,其取值范围为-32768-32767 短整型 类型说明符为 short int或 short。所占字节和取值范围均与基本型相同。 ●长整型 类型说明符为 long int或long,在内存中占4个字节,其取值同长整常数的取 值范围
8 \\ 反斜线符"\" \' 单引号符 \a 鸣铃 \” 输出双引号 \ddd 1~3 位八进制数所代表的字符 \xhh 1~2 位十六进制数所代表的字符 广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。上述的 \ddd 和\xhh 正是为此而提出的。ddd 和 hh 分别为八进制和十六进制的 ASCII 代码。如\101 表示字符"A" ,\102 表示字母"B",\134 表示反斜线,\x0A 表示 换行等。 6.字符串常量:字符串常量是一对双引号括起来的字符序列。如“boy”、“ABCDE”等。 ⚫ 每个字符串的结尾加一个字符串结束标志(‘\0’)系统根据此标志判断字符 串是否结束。 “\0“是一个 ASCII 为 0 的字符,是空操作符,由系统自动加到字符串的结 尾,不是人工操作。例“china”实际内存中:c h i n a \0 ⚫ 字符串常量所占的字节数是它的字符的个数加 1。而字符串的长度是从第一 个字符开始到第一个’\0’之间的字符的个数。例如:“qwert\0gs”的字节数 是 9 而长度为 5。 7.符号常量: 是用一个标识符标识一个常量。在使用过程中,这个标识符就代表了该常量。若程 序的开头有 #define PI 3.1415926 则 PI 即是符号常量,在程序中代表 3.1415926 (二)变量: 概念:在程序执行过程中取值可变的量称为变量。它们可与数据类型结合起来分类。例 如,可分为整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量、枚举常 量、枚举变量。在程序中,常量是可以不经说明而直接引用的,而变量则必须先说明后 使用。 变量定义的形式:存储类型名 类型标识符 变量名 1[=表达式 1],……. 变量名 n[= 表达式 n]; 1.整形变量 (1)整形变量分类:基本型(int)、短整型(short [int])、长整形(long [int])、无符号 整形(unsigned int 、unsigned short、unsigned long)。 ⚫ 基本型 类型说明符为 int 或 signed int,在内存中占 2 个字节,其取值范围为-32768-32767 ⚫ 短整型 类型说明符为 short int 或 short。所占字节和取值范围均与基本型相同。 ⚫ 长整型 类型说明符为 long int 或 long ,在内存中占 4 个字节,其取值同长整常数的取 值范围
无符号型 类型说明符为 unsigned 无符号型又可与上述三种类型匹配而构成 无符号基本型类型说明符为 unsigned int或 unsigned 无符号短整型类型说明符为 unsigned short 无符号长整型类型说明符为 unsigned long 各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省 去了符号位,故不能表示负数。下表列出了 Turbo C中各类整型量所分配的内 存字节数及数的表示范围 类型说明符 数的范围 分配字节数 -32768~32767 short int 32768-32767 2147483648~2147483647■■ unsigned int 0-65535 unsigned short 0~65535 unsigned long 0~4294967295 (2)整型变量的说明 变量说明的一般形式为:类型说明符变量名标识符,变量名标识符 例如 int a, b,c;(anbc为整型变量) long x, y;(xy为长整型变量) unsigned p, q,(pq为无符号整型变量) (3)在书写变量说明时,应注意以下几点: 允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号 间隔。类型说明符与变量名之间至少用一个空格间隔 最后一个变量名之后必须以“;”号结尾。 变量说明必须放在变量使用之前。一般放在函数体的开头部分。 2.实型变量 (1)实型变量分类:单精度(foat)、双精度( double)、长双精度( long double) 在 Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为-34E-38~ 34E+38,只能提供7位有效数字。 双精度型占8个字节(64位)内存空间,其数值范围为-1.7E-308~1.7E+308, 可提供16位有效数字。 (2)实型变量说明的格式和书写规则与整型相同。 例如: float x,y;(x,y为单精度实型量)
9 ⚫ 无符号型 类型说明符为 unsigned。 无符号型又可与上述三种类型匹配而构成: 无符号基本型 类型说明符为 unsigned int 或 unsigned。 无符号短整型 类型说明符为 unsigned short 无符号长整型 类型说明符为 unsigned long 各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省 去了符号位,故不能表示负数。 下表列出了 Turbo C 中各类整型量所分配的内 存字节数及数的表示范围。 类型说明符 数的范围 分配字节数 int -32768~32767 ■■ short int -32768~32767 ■■ long int -2147483648~2147483647 ■■■■ unsigned int 0~65535 ■■ unsigned short 0~65535 ■■ unsigned long 0~4294967295 ■■■■ (2)整型变量的说明 变量说明的一般形式为: 类型说明符 变量名标识符,变量名标识符 例如: int a,b,c; (a,b,c 为整型变量) long x,y; (x,y 为长整型变量) unsigned p,q; (p,q 为无符号整型变量) (3)在书写变量说明时,应注意以下几点: ⚫ 允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号 间隔。类型说明符与变量名之间至少用一个空格间隔。 ⚫ 最后一个变量名之后必须以“;”号结尾。 ⚫ 变量说明必须放在变量使用之前。一般放在函数体的开头部分。 2.实型变量 (1)实型变量分类:单精度(float)、 双精度(double)、长双精度(long double) 在 Turbo C 中单精度型占 4 个字节(32 位)内存空间,其数值范围为-3.4E-38~ 3.4E+38,只能提供 7 位有效数字。 双精度型占 8 个字节(64 位)内存空间,其数值范围为-1.7E-308~1.7E+308, 可提供 16 位有效数字。 (2)实型变量说明的格式和书写规则与整型相同。 例如: float x,y; (x,y 为单精度实型量)
double a b,c;(ab,c为双精度实型量) 3.字符型变量:用char来定义 字符型变量用来存放一个字符型常量,且只能放一个字符。实际在内存中存 放的是该字符的ASCI值。 C语言中字符型数据和整形数据间可以通用,一个字符型数据既可以按字符 型数据处理也可以按整形数据处理,按整形数据处理时将ASCI值作为整 数处理,故字符型数据可以进行算术运算 字符型数据占一个字节,只能存放0-255之间的整数 字符变量类型说明的格式和书写规则都与整型变量相同。 4.在c语言中没有专门的字符串变量,如果要将字符串放在变量中,应使用字符数组。 5.变量的初值和类型转换 (一)变量赋初值 在程序中常常需要对变量赋初值,以便使用变量。语言程序中可有多种方法。在定义时 赋以初值的方法,这种方法称为初始化。在变量说明中赋初值的一般形式为 类型说明符变量1=值1,变量2=值2,:例如 (1)对被定义的变量均赋初值 float x=3.2,y=3f,z=0.75 char chI=k ch2=P (2)对被定义的变量的一部分赋初值 nt a b, c=5 (3)对几个变量赋同一初值 nta=3,b=3,c=3 (二)变量类型的转换 变量的数据类型是可以转换的。转换的方法有两种,一种是自动转换,一种是强制转 1、自动转换 自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以 下规则: 若参与运算量的类型不同,则先转换成同一类型,然后进行运算。 转换按数据长度增加的方 向进行,以保证精度不降高 double← float 低。如int型和log型运算 时,先把int量转成long型 g 后再进行运算 unsigned 低 short char 10 图2
10 double a,b,c; (a,b,c 为双精度实型量) 3.字符型变量:用 char 来定义 ⚫ 字符型变量用来存放一个字符型常量,且只能放一个字符。实际在内存中存 放的是该字符的 ASCII 值。 ⚫ C 语言中字符型数据和整形数据间可以通用,一个字符型数据既可以按字符 型数据处理也可以按整形数据处理,按整形数据处理时将 ASCII 值作为整 数处理,故字符型数据可以进行算术运算。 ⚫ 字符型数据占一个字节,只能存放 0-255 之间的整数。 ⚫ 字符变量类型说明的格式和书写规则都与整型变量相同。 4.在 c 语言中没有专门的字符串变量,如果要将字符串放在变量中,应使用字符数组。 5.变量的初值和类型转换 (一)变量赋初值 在程序中常常需要对变量赋初值,以便使用变量。语言程序中可有多种方法。在定义时 赋以初值的方法,这种方法称为初始化。在变量说明中赋初值的一般形式为: 类型说明符 变量 1= 值 1,变量 2= 值 2,……; 例如: (1)对被定义的变量均赋初值 float x=3.2, y=3f, z=0.75; char ch1='K', ch2='P'; (2)对被定义的变量的一部分赋初值 int a,b,c=5; (3)对几个变量赋同一初值 int a=3,b=3,c=3; (二)变量类型的转换 变量的数据类型是可以转换的。转换的方法有两种, 一种是自动转换,一种是强制转 换。 1、自动转换 自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以 下规则: ⚫ 若参与运算量的类型不同,则先转换成同一类型,然后进行运算。 ⚫ 转换按数据长度增加的方 向进行,以保证精度不降 低。如 int 型和 long 型运算 时,先把 int 量转成 long 型 后再进行运算。 高 double float long unsigned 低 int short , char 图2.1