第三章 数据类型
3.2.2 变量
一般规定不得使用系统的保留字作为变量或 其它标识符的名字。例如: 其它标识符的名字。例如: main,define,printf,for等均为保留字 等均为保留字。 main,define,printf,for等均为保留字。 保留字是系统做特定的函数名、定义(说明) 保留字是系统做特定的函数名、定义(说明) 语句命令字等使用的。 符、语句命令字等使用的。
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
如果将这个最大值加1 就变成: 如果将这个最大值加1,就变成:
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3.3.2
整型变量
按照有符号数的表示方法,最高位为“1”时 按照有符号数的表示方法,最高位为“1”时, 该数是负数。 该数是负数。而负数的机内表示为它的补码 形式, 32768, 形式,因此该数实际上为 -32768,这种情况 成为整型数据的溢出。 成为整型数据的溢出。此时一般应定义为长 整型(long)。 整型(long)。 *加2的情况
3.5 3.5.1
字符型数据 字符常量
字符常量用单引号括起来的一个字符。 字符常量用单引号括起来的一个字符。 如: ’a’,‘c’,‘?’,‘9’, ,c,?,9, 这里的字符主要指ASCII码表中, ASCII码表中 这里的字符主要指ASCII码表中,可以在键 盘上输入的部分字符。 盘上输入的部分字符。
3.3.3 整型常量的类型
(1)当一个整数的值在-32768~+32767范围内, 当一个整数的值在-32768~+32767范围内, 范围内 自动地作为int型或short int型常量 int型或 型常量。 自动地作为int型或short int型常量。 当一个整数的值在(2)当一个整数的值在-21473648~+21473647 范围内,自动地作为long int型常量 型常量。 范围内,自动地作为long int型常量。 整型常量无unsigned unsigned型 (3)整型常量无unsigned型。但允许将常量 赋值给一个unsigned型变量。 unsigned型变量 赋值给一个unsigned型变量。 (4)整型常量后面加一个字母“L”(或小写 整型常量后面加一个字母“L”( 的“l”),则认为是long int 型。 ) 则认为是long
3.5.1
字符常量
除了上述形式之外, 除了上述形式之外,还允许以 “\” 开头的 特殊字符序列,也称特殊字符常量。 特殊字符序列,也称特殊字符常量。 特殊字符序列用来做“控制字符” 特殊字符序列用来做“控制字符”,实现某 种特定的功能。 种特定的功能。这种形式用来表示非显示字 实现特殊功能。不显示在屏幕上, 符,实现特殊功能。不显示在屏幕上,也不 在打印机上打印。 在打印机上打印。 做回车换行符。这里字符“ 如用 “\n” 做回车换行符。这里字符“n” 的意义已经转变,因此又被称为转义字符。 的意义已经转变,因此又被称为转义字符。 开头的特殊字符见P.48 P.48表 常用的以 ‘\’ 开头的特殊字符见P.48表3.3
3.2.2 变量
其值可以改变的量,称为变量。 其值可以改变的量,称为变量。 变量在内存中占据一组连续的存储单元, 变量在内存中占据一组连续的存储单元,存 放变量的值。其值是变化的。 放变量的值。其值是变化的。 每个变量有一个变量名。 每个变量有一个变量名。
3.2.2 变量
标识符:用来表示变量名、符号常量名、 标识符:用来表示变量名、符号常量名、函 数名、数组名、类型名、 数名、数组名、类型名、文件名等的字符序 列。 标识符由字母、数字和下划线组成。 标识符由字母、数字和下划线组成。而且第 一个字符必须为字母或下划线。 一个字符必须为字母或下划线。 标识符中的字母区分大小写。 标识符中的字母区分大小写。 标识符的长度在不同的C 标识符的长度在不同的C语言版本中有不同 的规定, 中规定为不超过32 32个有效 的规定,Turbo C 中规定为不超过32个有效 字符。 字符。
3.3.2
整型变量
3.整型变量的定义 3.整型变量的定义 对于变量,必须先定义,后使用。 对于变量,必须先定义,后使用。 由于在实际的应用中存在各种不同的数据类 型。在定义变量时必须指定其所代表的数据 类型。变量的定义一般放在函数(程序) 类型。变量的定义一般放在函数(程序)开 始的声明部分, 始的声明部分,如:
3.4.2
实型变量
3. 实型数据的舍入误差 语言中规定了实型数据的有效位数, c语言中规定了实型数据的有效位数,在实 际运算时,如果超出了范围,不做溢出处理, 际运算时,如果超出了范围,不做溢出处理, 有效位以外的数字将被舍去。 有效位以外的数字将被舍去。并由此产生舍 入误差。 入误差。 例如: 的结果不一定等于1 例如:计算 1.0/3*3 的结果不一定等于1, 因此,编程时应考虑数据的范围,避免出错。 因此,编程时应考虑数据的范围,避免出错。
第三章
数据类型、 数据类型、 运算符与表达式
C的数据类型 3.1 C的数据类型
基本类型 数据类型 构造类型 指针类型 空类型 整型 字符型 单精度型 实型(浮点型) 实型(浮点型) 双精度型 枚举类型 数组类型 结构体类型 共用体类型
3.2
常量与变量
3.2.1 常量和符号常量
在程序运行过程中,其值不能被改变的量称为常量 在程序运行过程中, 12、12.34、 book” 如:12、12.34、‘a’、“This is a book 、 可以用一个名字表示一个常量, 可以用一个名字表示一个常量,此时称为符号常量 #define PRICE 30 main( ) 符号常量也 { int a=10,total; 不允许改变, 不允许改变, total=a*PRICE; 但可重新定 printf(“total=%d total=%d”,total); printf( total=%d ,total); 义。 }
3.4.2
实型变量
实型数据的舍入误差。 例3.4 实型数据的舍入误差。 main() { float a,b; a=1.23456789e10; b=a+20; printf(“%f ); %f\ printf( %f\n”); }
3.4.3 实数常量的类型
实型常量自动按双精度double型处理。 实型常量自动按双精度double型处理。 double型处理 一个实型常量可以赋给一个float float型或 一个实型常量可以赋给一个float型或 double型的变量 型的变量, double型的变量,根据变量的类型截取实型 常量中有效位数字。 常量中有效位数字。
3.4
实型数据
3.4.1 实型常量
实数( number)又称浮点数 floating又称浮点数( 实数(real number)又称浮点数(floatingnumber)。有两种表示形式: )。有两种表示形式 point number)。有两种表示形式: 十进制小数形式, 十进制小数形式, 如 0.34 , 45.0 指数形式: 指数形式:123.456E0 = 123.456 * 100 12.3456E1 = 12.3456 * 101 1.23456E2 = 1.23456 * 102 规定:整数部分保留1位的形式为标准形式, 规定:整数部分保留1位的形式为标准形式, 因此: 5.678E因此:0.05678 应写成 5.678E-02
3.3.2
整型变量
main( ) { int a,b,c,d; unsinged u; long int e,f; …… } 不同类型的整数之间可以进行运算, 不同类型的整数之间可以进行运算,但不能 超出其取值范围。 超出其取值范围。
3.3.2
整型变量
4.整型数据的溢出 4.整型数据的溢出 整型(int)变量的最大允许值为32767, 变量的最大允许值为32767 整型(int)变量的最大允许值为32767,用 16位二进制表示 位二进制表示: 16位二进制表示:
3.4.3 实数常量的类型
截取实型常量中有效位数字, 截取实型常量中有效位数字,如: main( ) a,b,c; { float a,b,c; a=111111.111; b=222222.222; c=a+b; printf(“c=%f ,c); c=%f\ printf( c=%f\n”,c); }
3.3.2
整型变量
2.整型变量的分类----三种类型 2.整型变量的分类----三种类型 整型变量的分类---基本型 (int) 短整型 (short int , short) 长整型 (long int , long) 按照数的表示方法,还可以分为: 按照数的表示方法,还可以分为: 有符号型( 有符号型(signed) 无符号型(unsigned) 无符号型(unsigned)
3.3 3.3.1
整型数据 整型常量
整型常量通常称为整数, 整型常量通常称为整数,可用以下三种类型 表示: 表示: 十进制整数(D) 123, (D): 1、十进制整数(D):123,-456, 0 八进制整数(O) O123—(123)8 (O): (123)8, 2、八进制整数(O):O123 (123)8, O11—( -O11 (-11)8 十六进制(Ox) (Ox): Ox123—(123)16 3、十六进制(Ox.2 变量
应注意:不同长度的标识符, 应注意:不同长度的标识符,即使前面的部 分全相同,也应视为不同。 分全相同,也应视为不同。 例如: 例如: 为两个不同的变量。 a1 和 a12 为两个不同的变量。 是不同的变量。 a,A 是不同的变量。 为合法的变量。 sum,average,_total 为合法的变量。 均为不合法的变量。 M1.2,#b1,123a,a>b 均为不合法的变量。
3.3.2
整型变量
使用整型常量或变量一定要注意数据的范围, 使用整型常量或变量一定要注意数据的范围, 使之不要越界,造成数据的溢出。例如: 使之不要越界,造成数据的溢出。例如: main( ) 执行该程序后, 执行该程序后,变量 { int a,b,c; 的值为-32739, c的值为-32739,数 a=32767; 据溢出。 据溢出。 b=30; c=a+b; printf(“c=%d c=%d\ ,c); printf( c=%d\n”,c); }