第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_number stud_nam,stud_num
3、 应尽量“简洁明了,见名知意”。,符号常量举例,符号常量使用错例,二、常量和符号常量,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;printf(“total=%d”,total);PRICE=40;/*此句有误*/total=num*PRICE;printf(“t
4、otal=%d”,total);,例 3.1 输入半径,计算圆的周长和面积及圆球体积。#define PI 3.14159main()float radius;float circum,area,bulk;printf(“Please input radius:n”);scanf(“%f”,三、变量 在程序运行过程中其值可以被改变的量称为变量,习惯上变量名用小写字母表示。C 语言中,变量必须“先定义,后使用”。定义格式:存储类型 数据类型 变量名 如:auto int a;或 int a;定义作用:保证变量的正确引用。根据变量的数据类型而分配内存空间。根据变量的类型确定变量参与的运算是否合法。
5、,例题答案,变量存储示意,举例,3.2 常量与变量,重点,变量存储示意 如:int a=3;表示变量 a 为整型,为其分配两个字节的存储单元,并按整数方式存储数据。,变量定义举例以下各标识符组中,合法的用户标识为:(1)A)Pad!B)getc C)void D)a*(2)A)bb B)CCp?C)hiy D)_isw(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,例
6、如,说明,一、整型常量,整型常量 十进制整型常量。如:123,0,45 八进制整型常量,用 0 开头。如:0121 十六进制整型常量,用0 x 开头。如:0 x12 整型常量又可以表示成短整型常量和长整型常量。如:123L 或 123l;345S 或 345s,一,说明 可以加修饰符:unsigned 或 signed 87ANSI C 中并没有 规定各类型数据的长度、精度和数值范围。各类数据所占内存字节数随系统不同而不同,一般以一个机器字存放一个 int 型数据。,整型变量定义 int x;int a,b;unsigned short c,d;long max,min;,举例,3.3 整型数
7、据,3.整数数据的存储方式 有关原码、反码、补码的规定:原码:只将最高位作符号位,其余各位代表数 值本身的绝对值(以二进制表示)。,00000000,00001010,10 的原码:,10000000,00001010,10 的原码:,3.3 整型数据,如:int a;a=10;,反码:一个数如其值为正,则它的反码与原码相同;反之则符号位为 1,其余各位是对原码取反。如:,10的补码:,11111111,11110110,补码:正数的原码、反码、补码相同。负数的补码最高位为 1,其余各位为原码的 相应位取反,然后对整个数加 1。,00000000,00001010,10 的原码,0000000
8、0,00001010,10 的反码,10000000,00001010,10 的原码,11111111,11110101,10 的反码,怎么办?,为什么?,32767+1=?,将一个负数的补码转换为十进制数: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?,?,32
9、767+1=?main()long a,b;a=32767;b=a+1;printf(“%ld”,b);运行结果: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,对
10、于有符号整型数据,其存储单元的最高位 代表符号位,(0 为正;1 为负)对于无符号型整型数据,存储单元的所有位均 用作存放数本身。,例 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);,01111111,11111111,10000000,0
11、0000000,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(0 216 1),4.关于实型常量的说明,3.实型数据的舍入误差 123456.789e5+20=?
12、,舍入误差举例,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.49E12 注:字母 e 之前必须要有数字,指数 必须为整数。如:e3;2.1e3.5;e3 等都不合法。,注意,实型数据存储方式 实型数据按浮点数形式存储,将一个实型数
13、据分成小数部分和指数部分,分别存放。用二进制数来存放小数部分,用 2 的幂次来表示指数部分。如:3.14159 32位中,一般用 24 位表示小数(包括符号),8位表示指数部分。,2,实型常量的说明有些系统将其作为双精度来处理(64位)。以保证精度,但降低了运算速度。如:f=2.4567*4523.65 取前 7 位赋给 f。可在数的后面加字母 f 或 F来使系统按单精度(32位)来处理。实型常量赋给一个 float 型或 double 型变 量时,应考虑有效位数会不同。,4,实型变量分类 单精度型(float)占 32 位 双精度型(double),占 64 位 长双精度型(long dou
14、ble),占128 位 单精度实数提供 7 位有效数字,双精度 实数提供1516位有效数字,数值范围 随机器系统而异。如:float x,y;double m,n;,1,舍入误差举例 存放实型数据的内存单元总是有限的,提供的有效位数也有限。main()float a,b;a=123456.789e5;b=a+20;printf(“%f,%f”,a,b);a,b均为 12345678848.000000,3,3.5 字符型数据 一、字符常量 C 语言中,字符常量代表 ASCI I 码字符集里的一个字符,用单引号括起来的 一个字符来表示。如:a,X 字符常量也可用一类特殊形式(转义字符)表示,用反
15、斜杠开头(),代表特定的ASCII码字符。如:n代表一个换行符。,转义字符:,例3.3 转义字符的使用main()printf(“abctderftgn”);printf(“htibbjk”);,a,b,c,d,e,f,g,h,i,j,k,例 3.4 可向字符变量赋以整数。,源程序,三、字符变量在内存中的存储形式及使用方法 char c1,c2;c1=a;c2=b;,97,98,01100001,01100010,c1,c2,二、字符变量,字符变量用关键字 char 来说明。如:char c1,c2;char min;一个字符变量只能存放一个字符,在内存中一般占一个字节,结论,结论 字符型数据
16、与整型数据在一定范围内可以通用。二者可以相互赋值,一个字符数据可以按字符形式输出也可以按整数形式输出。,重点,可向字符变量赋以整数main()int i;char c;i=a;c=97;printf(“%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 进制数表示的字符。,可去掉,按位取反,加负
17、号,再减 1,2,输出为:2,C 语言对字符串常量的长度不加限制,C 编译系统总是自动在字符串结尾加一个转义字符0,作为字符串常量的结束标志。如:“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;多个同类型的变量定义时赋相同的初 值,方式为:in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据类型 运算 表达式 ff

链接地址:https://www.31ppt.com/p-5897497.html