c语言第3章 数据类型、运算符与表达式.ppt

上传人:思*** 文档编号:1080128 上传时间:2019-09-22 格式:PPT 页数:57 大小:1.31MB
返回 下载 相关 举报
c语言第3章 数据类型、运算符与表达式.ppt_第1页
第1页 / 共57页
c语言第3章 数据类型、运算符与表达式.ppt_第2页
第2页 / 共57页
点击查看更多>>
资源描述

《c语言第3章 数据类型、运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《c语言第3章 数据类型、运算符与表达式.ppt(57页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、C程序设计 数据类型、运算符与表达式,第 3 章 数据类型、运算符与表达式,第 3 章 数据类型、运算符与表达式,3.1 C语言的数据类型,数据结构是指数据的组织形式,例如:数组就是一种数据结构.处理同一类问题,如果数据结构不同,算法也会不同,例如:对10个整数排序和对由10个整数构成的数组排序的算法是不同的.因此考虑算法时,必须注意数据结构。数据类型是数据结构的基础。,程序 = 数据结构 + 算法,3.1 C语言的数据类型,数组类型,数据类型,构造类型,空类型,指针类型,双精度,单精度,实型(浮点型),字符型,枚举类型,基本类型,整型,结构体类型,共用体类型,注意:在程序中,对用到的所有数据

2、都必须指定其数据类型.,3.2 常量与变量,常量和符号常量常量是指在运行过程中,其值不能被改变的量称为常量。 常量有整型浮点字符等多种。例如 1,0,123为整型常量 4.6, 1.23为实型常量 a, d 为字符常量符号常量,用一个标识符代表的常量。 习惯上,符号常量名用大写,变量用小写,以示区别。,3.2 常量与变量,符号常量#define PRICE 30#include void main() int num, total; num=10; total=num * PRICE; printf(“total=%d”,total); ,total=300,程序中用#define命令行定义P

3、RICE代表常量30,此后凡在本程序中出现的PRICE都代表30,可以和常量一样进行运算.,3.2 常量与变量,符号常量用一个标识符来表示的常量称为符号常量。符号常量在使用之前必须先定义,其一般形式为: #define 常量名 常量值常量值可以是整型、实型及字符型。该语句后不使用分号(;)。一个#define语句只能定义一个符号常量。,3.2 常量与变量,符号常量一经定义,以后程序中所有出现该常量名的地方均代之以该常量值。优点:如果要修改程序中的某个常量时,只要修改其定义语句即可。符号常量不是变量,在程序中不能再用赋值语句对它重新赋值。习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以

4、示区别。,3.2 常量与变量,常量和符号常量 #define PRICE 255 . a=PRICE*b+6 c=PRICE+c/120 . e=165/PRICE+a*c PRICE是标识符,符号常量,a=255*b+6c=255+c/120.e=165/255+a*c,3.2 常量与变量,变 量变量:在程序运行过程中,其值可以改变的量称为变量。一个变量对应一定的内存存储单元。变量名实际上是以一个名字代表一个内存地址. 例如 int a; a = 3;,3.2 常量与变量,标识符标识符:c语言中用来对变量、符号常量、函数、数组、类型等数据对象命名的有效字符序列统称为标识符(名字).标识符由字

5、母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线,不能与关键字同名.,合法的变量名如: average,abd, a, s2, student_name, _init不合法的变量名如: M.D.John, 1a, #33, ab, char,3.2 常量与变量,注意大小写敏感:sum和SUM是两个不同的变量名.标识符长度:无统一规定,随系统而不同(建议不超过8个字符)。采用“见名知意”的变量名,以增加程序的可读性.如: name表示姓名,day表示日期.C语言要求对变量“先定义,后使用”,其目的在于: 凡未被事先定义的,不作为变量名,从而能保证程序中变量名使用得正确。 每一个变量被

6、指定为一确定类型,在编译时就能为其分配相应的存储单元。 每一变量属于一个类型,便于在编译时检查该变量所进行的运算是否合法。,习题1,在C语言中,用户能使用的正确标识符是( ) A.学生 B.int C.8stu D.Int以下选项中不能用作变量名的是( ) A. _float B.switch C.sum D._123,3.3 整型数据,整型常量(整常数) (1) 十进制形式:与数学上的整数表示相同; 例如: 12, -100, 0 (2) 八进制形式:在数码前加数字0; 例如: 012=1*81+2*80=10(十进制) (3) 十六进制形式:在数码前加0x(数字0和字母x)。 例如: 0x

7、12=1*161+2*160=18(十进制) * 八进制的数码范围为07; 018 * 十六进制的数码除了数字09外, 还使用英文字母a f (或A F)表示1015。 如:0x1e ,注意!,整型变量 整型数据在内存中是以二进制形式存放的,并且用补码形式表示.正数的补码等于它的原码 例如:十进制数10的二进制形式为1010,在内存中实际存放的情况如下负数的补码:将该数的绝对值的二进制形式,按位取反再加1. 例如:求-10的补码,3.3 整型数据,10的原码,取反,再加1得-10的补码,3.3 整型数据,整型变量的分类 基本整型(int) 短整型(short int 或 short) 长整型(

8、long int 或 long) 对以上3类都可以加上修饰符unsigned,以指定是”无符号数”.故可组合出六种类型。,3.3 整型数据,占内存字节数与值域上述各类型整型变量占用的内存字节数随系统而异. 如Turbo C中,有 short(2字节)int(2字节) long(4字节) 关键字 所占位数 取值范围 short 16 -3276832767 unsigned short 16 065535 int 16 -3276832767 unsigned 16 065535 long 32 -21474836482147483647 unsigned long 32 04294967295

9、,3.3 整型数据,整型变量的定义任何变量在使用前必须定义.在程序中使用未经定义的变量是不合法的.对变量的定义一般放在函数的开头部分。变量定义的实质 定义一种数据类型变量的实质,就是在内存中为该变量分配一定大小的存储空间.此时变量名作为访问该存储空间的标识符.在程序中对该变量进行读写操作时,都要访问该变量对应的存储空间进行数据读写.变量定义的一般形式: 例如 int a,b,c; /定义变量a,b,c为整型,3.3 整型数据,整型变量的定义变量的值 任何变量必须具有确定的数值才能参加运算和操作,否则将会引发潜在的错误. 变量定义后其赋值的过程称为变量的初始化, 变量初始化的方法有: 1. 可以

10、在变量定义的同时为其赋初值 int a=10; 2. 也可以在定义变量后再为其赋初值 int a; a=10; 3. 还可以同时定义多个变量并为其赋初值. int a=3, b=7, c=10;,错误写法 int a=b=c=3; ,3.3 整型数据,整型数据的溢出,3.3 整型数据,整型常量的类型,习题2,在VC环境中,错误的int类型的常数是( ) A.32768 B.0 C.038 D.0xAF已知sizeof(int)的值为2,为将10!的值存储到变量f中(10!=3628800),变量f的类型应声明为( ) A. long int B.int C.short int D.unsign

11、ed,3.4 浮点型数据,实型常量实数(浮点数)有两种表示方法:十进制形式(日常记数形式),由数字和小数点组成(必须有小数点)。如:0.123、.123、123.0、123.、0.0。指数形式(科学记数形式),用xx来表示十的幂次方。字母E之前必须有数字且E之后指数必为整数。如:22.E1、123E3(表示123103 )。,3.4 浮点型数据,实型变量1. 实数在内存中的存放形式:一个实数一般在内存中占4个字节在4字节中,用多少位来表示小数部分,多少位来表示指数部分由各编译系统决定.小数部分占的位数愈多,数的有效数字多,精度越高;指数部分占的位数愈多,则能表示的数值范围愈大.,3.4 浮点型

12、数据,实型变量2. 实型变量的分类:,实型常量不分float和double,根据范围赋值给相应的变量。如:float a;double b; a=111111.111; b=111111.111 a中实际存储的是111111.1 (7位有效) b中实际存储的是111111.111 (全部有效),习题3,以下( )是不合法的C语言数值常量。 A)011 B)1e1 C)8.0E0.5 D)0xabcd,3.5 字符型数据,字符型常量字符常量是由一对单引号括起来的一个字符。如 :a, x, D, #。 注意: a和A是不同的字符常量.一些特殊的字符常量:以“”开头的字符序列,有特殊的含义,叫转义符

13、。,main() main() printf(“first line”); printf(“first linen”) printf(“second line”); printf(“second linen”); ,first linesecond line,first line second line,3.5 字符型数据,3.5 字符型数据,字符型常量main() printf(); printf(“n”); /* 转义字符 */ printf(101n);,” A,3.5 字符型数据,字符型变量用来存放字符常量(一个字符)。一般一个字符变量占一个字节(8位)。定义形式如下:char c1,

14、c2;字符变量的赋值形式如下:c1= a; c2= b;c3=101;,3.5 字符型数据,字符数据在内存中的存储形式及其使用方法在内存中,字符变量的实际值是字符变量相应的ASCII代码。C语言中,字符型数据和整型数据之间可以通用,因此在C语言中,一个字符数据即允许以字符形式输出,也允许以整数形式输出。3. 字符数据与整型数据可以互相赋值。,例如: 字符a和b在内存中的存储形式,3.5 字符型数据,字符数据在内存中的存储形式及其使用方法例3.6 向字符变量赋予整数main ( ) char c1, c2; c1 = 97; c2 = 98; printf (“%c %cn”, c1, c2);

15、 /* a 和b 的ASCII码为97和98 */ printf (“%d %dn”, c1, c2); ,输出: a b 97 98,3.5 字符型数据,字符数据在内存中的存储形式及其使用方法例3.7 大小写字母的转换main ( ) char c1, c2; c1 = a ; c2 = b ; /* a 和b 的ASCII码为97和98 */ c1 = c1-32; c2 = c2-32; printf (“%c %cn”, c1, c2); ,输出: A B,3.5 字符型数据,字符串常量用双引号括起来的字符序列,如: “How do you do”, “CHINA”, “a”, “$

16、123.34” 字符串可以一次输出,如:printf(“How do you do”);在内存中,对字符串常量是采用字符数组表示,即用一个字符型数组来存放一个字符串。 例如: char c; c=“CHINA”; 是错误的.,3.5 字符型数据,字符串常量注意: a是字符常量,“a”是字符串常量,二者不同。 C语言规定:在每一个字符串常量的结尾加一个字符串结束标志0,以便系统据此判断字符串是否结束. a在内存中占一个字节, “a”在内存在占两个字节- a和0 例如,字符串“CHINA”在内存中是:,习题4,以下_是不合法的C语言字符常量。 A)018 B)” C) D)xcc将字符g赋给字符变

17、量c,正确的表达式是_ 。 A) c=147 B) c=147 C) c=147 D) c=0147 已知:char a=70;则变量a中_ 。 A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明非法已知ch是字符型变量,下面正确的赋值语句是_ 。 A)ch=123 B) ch=xff C) ch=08 D) ch=“”,3.6 变量赋初值,在变量定义的同时可以为变量赋初值。如:int a=3; (相当于 int a; a=3;)float f = 3.56;char c = a;int a,b,c = 5 ; 表示只给c赋初值。(相当于int a,b,c; c = 5;),3.7

18、 混合运算 混合运算,各类数值型数据间的混合运算不同类型的数据(整型、实型、字符型)可以进行混合运算。如:10 + a + 1.5 8765.1234 * b 必须首先将它们转换成同一类型的数值。类型转换由系统自动完成。,3.7 混合运算,3.7 混合运算,假设已指定i为整型变量,f为float变量,d为double型变量,e为long型变量,3.8 算术运算符和算术表达式,运算符和表达式 按操作功能运算符大致可分为算术运算符、关系运算符、逻辑运算符、按位运算符以及其它运算符如赋值运算符、条件运算符、逗号运算符等。 表达式是由操作数和运算符组成的序列。,注意!少数运算符号有双重意义,主要有以下

19、几种:,(1)“”号,在算术运算中即表示单目的取正运算, 又可表示双目的加法运算。(2)“”号,在算术运算中即表示单目的取负运算, 又可表示双目的减法运算(3)“*”号,在算术运算中即表示双目的乘法运算, 在指针运算中表示指针变量指向的变量。(4)“&”号,在位逻辑运算中表示双目“与”运算, 在指针运算中表示取地址的运算。,3.8 算术运算符和算术表达式,算术运算符基本的算术运算: 、*、% 是模运算,即求余运算,要求整数。 如:7%4的结果是3。说明:5/3的结果仍是整数,小数部分被忽略。5.0/3或5/3.0的结果为double型。,3.8 算术运算符和算术表达式,算术表达式 用算术运算符

20、和括符将操作数连接起来的式子。 优先级:() *、/、% +、- 结合性:从左至右; 表达式的值: 数值型(int、long、unsigned、double);,例如: 已知: float a=2.0; int b=6,c=3; 求解: a*b/c-1.5+a+fabs(-5)=?,float a=2.0; int b =6,c =3; a*b/c -1.5 +a +fabs(-5),12.0/3,5,4.0 - 1.5,2.5 + 97(int),99.5 + 5,104.5(double),3.8 算术运算符和算术表达式,强制类型转换运算符强制类型转换运算符可将一个表达式转换成所需类型。其

21、一般形式为:(类型名)(表达式) 例如:(double) a (int) (x+y) (float) (5%3)在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。,3.8 算术运算符和算术表达式,强制类型转换运算符main( ) float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%dn”,x,i); ,x=3.600000,i=3,3.8 算术运算符和算术表达式,自增、自减运算符使变量的值加1或减1。如:i, i 在使用i之前,先使i的值加(减)1 i, i 在使用i之后,再使i的值加(减)1例如:i的值为3,则 j= + +

22、 i; j的值为4,i的值为4 j= i + +; j的值为3,i的值为4又如: printf(“%d”, +i); 输出结果为4 printf(“%d”,i+); 输出结果为3,3.8 算术运算符和算术表达式,自增、自减运算符注意:自增运算符()和自减运算符()只能用于变量,而不能用于常量或表达式。 例如: 5+ 无变量提供 (a+b)+ 增值后不知放入a还是b自增运算符()和自减运算符()的结合方向是“自右至左”。 例如: - i + 相当于- (i+) 设i = 5, j = -i+, 则j=? , i=? 设i = 5, printf(“%d”, -i+ ); 则输出?,3.8 算术运

23、算符和算术表达式,复合的赋值运算赋值运算符:“=” 。在赋值符号前加上其它运算符号则构成复合赋值运算。 +=,-=,*=,/=,%=,=,,3.9 赋值运算符和赋值表达式,赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式” 。 一般形式为:例如:int a=12;求下列运算的结果。,3.10 逗号运算符和逗号表达式,逗号运算符和逗号表达式逗号运算符又称为“顺序求值运算符”,是所有运算符中级别最低的,它将两个表达式连接起来。 逗号表达式一般形式为:表达式1,表达式2,3.10 逗号运算符和逗号表达式,逗号运算符和逗号表达式求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值。 例如: a=3*5, a*4; a的值为15,表达式的值为60 (a=3*5, a*4), a+5; a的值为15, 表达式的值为20 又如: x=(a=3, 6*3); x的值为18 x=a=3, 6*a x的值为3, 表达式的值为18,练习:a=3*5, a+*4, 2*a ?,作业,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com