华科C语言第02章数据类型运算符及表达式课件

上传人:我*** 文档编号:145745997 上传时间:2020-09-23 格式:PPT 页数:40 大小:570KB
返回 下载 相关 举报
华科C语言第02章数据类型运算符及表达式课件_第1页
第1页 / 共40页
华科C语言第02章数据类型运算符及表达式课件_第2页
第2页 / 共40页
华科C语言第02章数据类型运算符及表达式课件_第3页
第3页 / 共40页
华科C语言第02章数据类型运算符及表达式课件_第4页
第4页 / 共40页
华科C语言第02章数据类型运算符及表达式课件_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《华科C语言第02章数据类型运算符及表达式课件》由会员分享,可在线阅读,更多相关《华科C语言第02章数据类型运算符及表达式课件(40页珍藏版)》请在金锄头文库上搜索。

1、1,C语言程序设计,2,标识符 定义:用来标识变量、常量、函数等的字符序列 组成: 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 大小写敏感 不能使用关键字 分类:关键字32个(P22)、特定字7个(P22)、一般标识符 命名原则: 见名知意 不宜混淆 如l与I, o与0,例:判断下列标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,M.D.John,3days,#33,char,$123,ab,第二章 数据类型、运算符及表达式2.1 C基本字符、标识

2、符和关键字,3,2.2、常量与变量,常量:不变的量,包含数值常量和符号常量。 例如: 3、3u、3l、3.1416、a、Hello 例如:#define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(total= %dn,total); ,4,变量:可以改变的量。 变量的命名应符合标识符的命名规则,是以字母、下划线开头的字母、下划线、数字串。 合法变量:a、 a1、 sum、 _total 不合法变量:1a、 #88、 int 变量要先定义,后使用。 常规建议:a、变量名小写,常量名大写。 b、下划线改变较长变量的

3、可读性。 例如:day_of_year c、以下划线开头的变量名表示标准函数库内变量。例如:_flag,5,2.3数据类型(Data Type),数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 可进行的操作,6,超出取值范围会怎样?,TC2中int的范围是-3276732767 如果我们给它一个小于-32767或者大于32767的数会如何呢? 现场编程测验,小蛇能吞下大象吗?,7,溢出(Overflow)造成的危害,一台安装了Windows 95/98的机器,如果连续运行49.7天没有重新启动,可能死机 原因: Windows自启动时刻起,有一个计数器,记录系统已经运行了多少

4、毫秒。这个计数器是个unsigned long 类型的变量 unsigned long的最大值是:4294967295 一天有 24*60*60*1000 = 86400000毫秒 4294967295 / 86400000 = 49.71026961805 当49.7天的时候,此计数器会溢出,引起死机,8,1、整型数据,整型常量:十进制:123 八进制:0123 (123)8 十六进制:0 x123 (123)16 长整型数值:数尾+L或l。例如123L 无符号型:数尾+U或u。例如123u,零,问题: 0123 = ( )10 0 x123 = ( )10 0Xff = ( )10,9,整

5、型变量:,10,当n=1时,当n=-1时,短整形,取值范围,16位:,-3276832767,符号位,-32768,32767,11,程序举例:例1:/*exp2_1.c*/ main( ) int x=1267,y=01267,z=0 x1267; printf(%d , %d , %dn, x, y, z); printf(%o , %o , %on, x, y, z); printf(%x , %x , %xn, x, y, z); ,运行exp2_1.c得结果为: 1267 , 695 , 4711 2363 , 1267 , 11147 4f3 , 2b7 , 1267,12,程序举

6、例:例2:/*exp2_2.c*/ main( ) int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u; d=b+u; printf(a+u=%d , b+u=%dn, c, d); ,运行exp2_2.c得结果为: a+u=22 , b+u=-14,13,程序举例:例3:/*exp2_3.c*/ main( ) int a, b; a=2147483647; b=a+1; printf(a=%d , b=%dn,a, b); ,运行exp2_3.c得结果为: a=2147483647 , b=-2147483648,14,2、实型数据,实型常量:日

7、常记数法:123.45、123.45f、123.45l 科学记数法:0.12345e3 123.45 12345.0E-2 123.45 1.2345e2 123.45 1.2345e2f 123.45 实型变量: 单精度:float 4字节 67位有效数字 双精度:double 8字节 1516位有效数字 长双精度:long double 16字节 1819位有效数字,15,浮点数据,浮点数据的机内表示:,j,S,阶码,阶符,阶码数值部分,尾数,数符,尾数数值部分,阶码是整数,阶符和阶码的位数合起来反映浮点数的表示范 围及小数点的实际位置;尾数是小数,其位数反映了浮点数的 精度;尾数的符号代

8、表浮点数的正负。,16,程序举例:例4:/*exp2_4.c*/ main( ) float a,b; a=123456.789e5; b=a+20; printf(b=%fn, b); ,运行exp2_4.c得结果为: b=12345678848.000000,17,ASCII字符表,18,ASCII字符表2,aaa,19,定义:用单引号括起来的单个普通字符或转义字符.,字符常量的值:该字符的ASCII码值,如 101 -A 012 -n 376 - x61 -a 60 -0 483 -(),例: A-101-x41-65,如 A65, a97, 048 , n10,如 a A ? n 10

9、1,转义字符:反斜线后面跟一个字符或一个代码值表示,例5 转义字符举例exp2_5.c,exp2_6.c main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C); ,运行结果:(屏幕显示) A B C Isay:”How are you?” C Program Turbo C,例6 main() printf(“Yb=n”); ,运行结果: 屏幕显示:= 打印机输出:,字符常量,3、字符型数据,20,字符变量: char 1个字节只能存放一个字符 例如:char x=

10、a、 y=+、z=n;,21,字符常量与字符串常量不同,定义:用双引号(“”)括起来的字符序列 存储:每个字符串尾自动加一个 0 作为字符串结束标志,例: char ch; ch=“A”;,字符串常量,22,程序举例:例7:/*exp2_7.c*/ main( ) char c1 , c2; c1=97;c2=98; printf(c1=%c , c2=%cn, c1, c2); printf(c1=%d , c2=%dn, c1, c2); ,运行exp2_7.c得结果为: c1=a , c2=b c1=97 , c2=98,23,程序举例:例8:/*exp2_8.c*/ main( ) c

11、har c1 , c2; c1=a; c2=b; c1=c1-32 ; c2=c2-32; printf(c1=%c , c2=%cn, c1, c2); ,运行exp2_8.c得结果为: c1=A , c2=B,24,隐式转换(自动转换) 什么情况下发生 运算转换-不同类型数据混合运算时 赋值转换-把一个值赋给与其类型不同的变量时 输出转换-输出时转换成指定的输出格式 函数调用转换-实参与形参类型不一致时转换 转换规则:参加运算的各种变量都转换成它们之中数据最长的数据类型。,4、不同类型数据间的转换,25,char ch; int i; float f; double d;,ch/i + f

12、*d - (f+i),例1,26,字符串与数值类型之间的转换,int i = 123 这样用是不行地 atof(),atoi(),atol() 把字符串转为double,int和long 定义在stdlib.h中 sprintf() 可以用来把各种类型的数值转为字符串 定义在stdio.h中,27,一般形式:(类型名)(表达式) 例: (int)(x+y) (int)x+y (double)(3/2) (int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变,例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,

13、x,i); 结果:x=3.600000,i=3,精度损失问题,显式转换(强制转换),28,强制类型转换: 例如: (float)(5%3)的结果为2.0 sqrt( (double)n ),main( )(TC环境) int x,y,z; x=400;y=200; z=x*y; printf(%dn,z); 运行结果为: 14464,main( ) int x,y; long z; x=400;y=200; z=(long)x*y; printf(%ldn,z); 运行结果为: 80000,29,类型强转,强转与指针,并称C语言两大神器,用好了可以呼风唤雨,用坏了就损兵折将,屠 龙刀,倚 天

14、剑,30,2.4、运算符与表达式1、算术运算符,(1)、算术运算符:+、-、*、/、%(求模) 问题:优先级:先*、/、% 后+、- 结合性:从左到右 (2)、自增自减运算: +i , -i(先增/减1,后使用) i+ , i-(先使用,后增/减1) (3)、-a 运算: 举例:a=-a;,31,自增自减运算:单目运算符,右结合 举例:假设每小题初值 i=3; j=+i结果为:i=4,j=4 j=i+结果为:i=4,j=3 j=-i+结果为:i=4,j=-3 j=i+i结果为:i=4,j=6 j=(i+)+(i+)+(i+)结果为:i=6,j=9 j=(+i)+(+i)+(+i)结果为:i=6

15、,j=15,32,2、赋值运算符,(1)、简单赋值运算符:a=3;b=c=0;c=a+b; 若赋值号左右两边类型不一致,自动转换,以左边变量为基准。 例如:int a=289; long b=65536; char c=a; c=a;(c的值为33) a=c; (a的值为97) a=b;(a的值为0),00000001 00100001,00000000 00000001 00000000 00000000,0110 0001,33,(2)、复合赋值运算符: 10种:+= -= *=/=%= = x (3)、赋值表达式: 赋值表达式的值就是赋值号左边变量的值。 举例:a=5+(c=6)(a=1

16、1, c=6) a=(b=4)+(c=6)(a=10, b=4, c=6) a=12; a+=a-=a*a(a=-264),34,3、逗号运算符,一般形式:表达式1,表达式2; 执行过程:求表达式1求表达式2整个表达式的值等于表达式2的值。 例如: a=3+5,6+8; ( a=8 , 整个表达式的值=14) a=(3+5,6+8); ( a=14 , 整个表达式的值=14) z=(y=3,y*y); (y=3, z=9) t=si, si=sj, sj=t;(表示整体不可分),35,课堂练习,一、指出下列标识符中哪些是非法的。 a_char(2) b22c(3)286pc (4) am(5) _7b(6)ab#

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号