第3章数据类型、运算符与表达式-ff.ppt
《第3章数据类型、运算符与表达式-ff.ppt》由会员分享,可在线阅读,更多相关《第3章数据类型、运算符与表达式-ff.ppt(33页珍藏版)》请在三一文库上搜索。
1、重点: 理解常量变量含义 理解整型、实型、字符型数据的表示和存储 理解表达式的含义和组成方式,第三章 数据类型、运算符与表达式,3.1 C的数据类型,C的数据类型,数据类型,基本类型,构造类型,指针类型(),空类型(void),字符型(char),数值类型,枚举类型(enum),数组类型( ),结构体类型(struct),共用体类型(union),整型(short,int,long,unsigbed),实型,单精度型(float),双精度型(double),用户标识符,表示变量名、函数名、数组名、文件名和类型名的有效字符序列,C语言的标识符分三类:,3.2 常量与变量,一、标识符,保留关键字
2、均用小写字母表示,如: char int auto break 等。 保留关键字不能作用户标识符使用。,保留关键字,1,预定义标识符 供C的库函数名或预编译处理中的专用命名使用。 如:NULL=0等,预定义标识符,2,用户标识符 C程序中用户用于表示变量名,函数名,数组名,文件名,类型名的有效字符序列。,3,用户标识符的命名规则,用户标识符的命名规则 由英文字母 , 数字 , 下画线 组成 ,且必 须是由字母或下画线开头。 大 、小写英文字母的含义不同。 个数随机器系统不同而不同。一般取前 面 8 个字符( Turbo C 可取 32 个字符) 如: stud_name ,stud_numbe
3、r stud_nam, stud_num 应尽量 “ 简洁明了,见名知意 ” 。,符号常量举例,符号常量使用错例,二、常量和符号常量,3.2 常量与变量,2. 符号常量:习惯上用大写字母表示。,注意: 符号常量在其作用域内不能改变, 也不能再被赋值,1. 一般常量,重点,一般常量: 整型常量 : 1, 4, 3, 0 实型常量: 1.23 , 0.345 字符常量: a , d 字符串常量: “CHINA” “”,符号常量使用错例 #define PRICE 30 main ( ) int num , total ; num = 10 ; total = num * PRICE ; print
4、f ( “ total = %d ” , total ) ; PRICE = 40 ; /* 此句有误 */ total = num * PRICE ; printf ( “ total = %d ” , total ) ; ,例 3.1 输入半径,计算圆的周长和面积及圆球体积。 #define PI 3.14159 main( ) float radius; float circum, area, bulk ; printf(“Please input radius:n”); scanf(“%f”, ,三、 变量 在程序运行过程中其值可以被改变的量称为变量, 习惯上变量名用小写字母表示。 C
5、 语言中,变量必须“ 先定义,后使用 ”。 定义格式: 存储类型 数据类型 变量名 如: auto int a; 或 int a; 定义作用: 保证变量的正确引用。 根据变量的数据类型而分配内存空间。 根据变量的类型确定变量参与的运算是否合法。,例题答案,变量存储示意,举例,3.2 常量与变量,重点,变量存储示意 如: int a = 3 ; 表示变量 a 为整型,为其分配两个字节的存储单元,并按整数方式存储数据。,变量定义举例 以下各标识符组中,合法的用户标识为: (1) A) Pad! B) getc C) void D) a* (2) A) bb B) CCp? C) hiy D) _i
6、sw (3) A)_0123 B)_del C) if D) keep%,例题答案 B (2) C , D (3) A , B,重点,二、 整型变量,2. 定义: 一般格式: 存储类型 数据类型 变量名,1. 分类 基本型 int 短整型 short int 或 short 长整型 long int 或 long,例如,说明,一、整型常量,整型常量 十进制整型常量。 如: 123 , 0 , 45 八进制整型常量,用 0 开头。 如:0121 十六进制整型常量,用0x 开头。 如:0x12 整型常量又可以表示成短整型常 量和长整型常量。 如: 123L 或 123l ; 345S 或 345s
7、,一,说明 可以加修饰符: unsigned 或 signed 87ANSI C 中并没有 规定各类型数据的长度、精度和数值范围。各类数据所占内存字节数随系统不同而不同,一般以一个机器字存放一个 int 型数据。,整型变量定义 int x ; int a , b ; unsigned short c , d ; long max , min ;,举例,3.3 整型数据,3. 整数数据的存储方式 有关原码、反码、补码的规定: 原码:只将最高位作符号位,其余各位代表数 值本身的绝对值 ( 以二进制表示 ) 。,00000000,00001010,10 的原码:,10000000,00001010,
8、 10 的原码:,3.3 整型数据,如: int a; a = 10;,反码:一个数如其值为正,则它的反码与原码相同; 反之则符号位为 1 ,其余各位是对原码取反。 如:, 10的补码 :,11111111,11110110,补码: 正数的原码、反码、补码相同。 负数的补码最高位为 1,其余各位为原码的 相应位取反,然后对整个数加 1 。,00000000,00001010,10 的原码,00000000,00001010,10 的反码,10000000,00001010, 10 的原码,11111111,11110101, 10 的反码,怎么办?,为什么?,32767+1=?,将一个负数的补
9、码转换为十进制数: a : 先对其各位取反 b : 再将其转换成十进制数 c : 加上负号,再减 1 如:,00000000,00001001, 10的补码为:,11111111,11110110,9,加负号再减 1 得 10,32767+1=? main( ) int a, b ; a = 32767; b = a +1; printf(“%d”,b); 运行结果: -32768 Why?,why,理解运算结果 32767+1=-32768 ?,?,32767+1=? main( ) long a, b ; a = 32767; b = a +1; printf(“%ld”,b); 运行结果
10、: 32768 OK!,!,以整数 13 为例: int 型 符号位 short 型 long 型 unsigned int 型 unsigned short 型 unsigned long 型,0 0000000,00001101,00001101,0 0000000,00000000,0 0000000,00001101,00000000,00001101,00000000,00001101,00000000,00001101,00000000,00000000,00000000, 对于有符号整型数据,其存储单元的最高位 代表符号位,( 0 为正 ;1 为负) 对于无符号型整型数据,存储单
11、元的所有位均 用作存放数本身。,例 3.2 ( p43 ) main ( ) int a , b , c , d ; unsigned int u ; a = 12 ; b = 24 ; u = 10 ; c = a + u ; d = b + u ; printf(“a+u=%d,b+u=%dn”,c,d ); ,结果为: a+u=22, b+u = 14,4. 整型数据的溢出 int 型变量的最大允许值是 32767,超出则会溢出。 如: main ( ) int a , b ; a = 32767 ; b = a + 1 ; printf ( “ %d %d ” , a , b ) ;
12、,01111111,11111111,10000000,00000000,a,b,32767, 32768,结果为: 32767 , 32768,5. 整型常量的类型 整型常量其值: 在32768 32767范围内,则视为 int 型, 可赋值给 int 型 或 long 型变量,如超出上述 范围,在231( 231 1 ) , 则视为 long 型。 一个非负值的整常量,可以赋给 unsigned 型 变量,但应考虑数值范围。 如: 50000 unsigned int 变量。 70000 unsigned int 变量 ,则溢出。 unsigned int 的范围 : 0 65535 (
13、0 216 1),4. 关于实型常量的说明,3. 实型数据的舍入误差 123456.789e5+20=?,舍入误差举例,2. 实型数据的存储方式,1. 实型变量分类,二 、实型变量 单精度型( float ) 双精度型( double ) 长双精度型( long double ) , 单精度提供 7 位,双精度提供1516位有效数字。,一 、实型常量,3.4 实型数据,实型常量 1. 十进制数形式: 数字 + 小数点 ( 必须有小数点 ) 如: 0.123 ; .123 ; 123.0 等。 2. 指数形式: 尾数+e或(E)+指数部分 如: 26.49e +12 26.49E+12 26.4
14、9E12 注: 字母 e 之前必须要有数字, 指数 必须为整数。 如: e3 ; 2.1e3.5 ; e3 等都不合法。,注意,实型数据存储方式 实型数据按浮点数形式存储,将一个实型数据分成小数部分和指数部分,分别存放。 用二进制数来存放小数部分,用 2 的幂次来表示指数部分。 如: 3.14159 32位中,一般用 24 位表示小数( 包括符号), 8位表示指数部分。,2,实型常量的说明 有些系统将其作为双精度来处理 (64位)。以保证精度,但降低了运算速度。 如:f = 2.4567 * 4523.65 取前 7 位赋给 f。可在数的后面加字母 f 或 F来使系统按单精度 (32位)来处理
15、。 实型常量赋给一个 float 型或 double 型变 量时,应考虑有效位数会不同。,4,实型变量分类 单精度型( float ) 占 32 位 双精度型( double ), 占 64 位 长双精度型( long double ),占128 位 单精度实数提供 7 位有效数字,双精度 实数提供1516位有效数字,数值范围 随机器系统而异。 如: float x , y ; double m , n ;,1,舍入误差举例 存放实型数据的内存单元总是有限 的,提供的有效位数也有限。 main ( ) float a , b ; a =123456.789e5; b = a + 20 ; pr
16、intf ( “%f, %f ”, a , b ) ; a,b均为 12345678848.000000,3,3.5 字符型数据 一 、字符常量 C 语言中,字符常量代表 ASCI I 码字符集里的一个字符,用单引号括起来的 一个字符来表示。 如: a , X 字符常量也可用一类特殊形式( 转义字符)表示,用反斜杠开头 ( ) , 代表特定的ASCII码字符。 如: n代表一个换行符。,转义字符:,例3.3 转义字符的使用 main( ) printf(“abctderftgn”); printf(“htibbjk ”); ,a,b,c,d,e,f,g,h,i,j,k,例 3.4 可向字符变量
17、赋以整数。,源程序,三 、字符变量在内存中的存储形式及使用方法 char c1 , c2 ; c1 = a ; c2 = b ;,97,98,01100001,01100010,c1,c2,二 、字符变量,字符变量用关键字 char 来说明。 如: char c1 , c2 ; char min ; 一个字符变量只能存放一个字符,在内存中一般占一个字节,结论,结论 字符型数据与整型数据在一定范围内可以通用。 二者可以相互赋值,一个字符数据可以按字符形式输出也可以按整数形式输出。,重点,可向字符变量赋以整数 main ( ) int i ; char c ; i = a ; c = 97 ; p
18、rintf(“%c,%dn ”, c, c ) ; printf(“%c,%dn”, i, i ) ; 输出: a,97 a,97,实例,有些系统 (如 Turbo C )将允许使用有符号字符型变量,把字符处理成带符号的整数,字符型变量的取值范围为( 128 127 )。 main ( ) signed char c = 376 ; printf ( “ %d ” , c) ; ,1 1111110,0 0000001,3位 8 进制数表示的字符。,可去掉,按位取反,加负号,再减 1, 2,输出为: 2,C 语言对字符串常量的长度不加限制,C 编译系统总是自动在字符串结尾加一个转义字符0, 作
19、为字符串常量的结束标志。 如: “ Hellow ” 在内存中占 7 个字节。,注意:字符常量与字符串常量的区别。如:a和“a” 在C语言中是两种完全不同类型的数据。,四 、字符串常量 如: “CHINA” ; “ How do you do ? ”,3.6 变量赋初值 C 语言中规定变量应先定义后使用。 允许在定义变量时对变量进行初始化 。 int a = 3 ; /* 指定a为整型变量,初值为3 * / float f = 3.56 ; char c = a ; int a , b , c = 4 ; 多个同类型的变量定义时赋相同的初 值,方式为: int a = 3 , b = 3 ,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据类型 运算 表达式 ff
链接地址:https://www.31doc.com/p-2254715.html