C语言程序ppt课件ch2数据类型、运算符与表达式.ppt

上传人:小飞机 文档编号:6503956 上传时间:2023-11-07 格式:PPT 页数:55 大小:520KB
返回 下载 相关 举报
C语言程序ppt课件ch2数据类型、运算符与表达式.ppt_第1页
第1页 / 共55页
C语言程序ppt课件ch2数据类型、运算符与表达式.ppt_第2页
第2页 / 共55页
C语言程序ppt课件ch2数据类型、运算符与表达式.ppt_第3页
第3页 / 共55页
C语言程序ppt课件ch2数据类型、运算符与表达式.ppt_第4页
第4页 / 共55页
C语言程序ppt课件ch2数据类型、运算符与表达式.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《C语言程序ppt课件ch2数据类型、运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《C语言程序ppt课件ch2数据类型、运算符与表达式.ppt(55页珍藏版)》请在三一办公上搜索。

1、共 55 页 第 1 页,第二章,数据类型、运算符与表达式,共 55 页 第 2 页,本章要点,数据的描述规则 数据的操作规则,共 55 页 第 3 页,2.1 2.2 2.32.42.52.6,基本符号 数据类型运算符和表达式数据类型转换自增运算和自减运算位运算,主要内容,共 55 页 第 4 页,程序设计语言的基本规则包括,常数 变量 运算符 表达式 函数,什么是语言规则?为什么要有这些规则?,把自然语言描述问题的方式转换为C语言的形式表达给计算机,规则,表达式,常数,变量,函数,运算符,共 55 页 第 5 页,常数3、5和3.6的存放空间是否相同?变量a如何表示?如何存放?计算机如何知

2、道3.6和a之间的关系?和sin x 如何输入?如何存放?计算机如何识别“=”?运算结果放在哪里?,计算机完成上述计算,首先要解决数据的输入和存放问题,问题,共 55 页 第 6 页,程序的任务是对数据进行处理,数据是程序处理的对象,而运算符是施加给这些数据的操作。数据和运算符是表达式的基本元素,数据的存储数据的操作,程序,共 55 页 第 7 页,2.1 C语言的基本符号,1.C语言的基本字符集,数 字:0 1 2 3 4 5 6 7 8 9 字 母:a b c z A B C Z 运 算 符:+-*/%=!=“特殊符号:_(下划线)回车(r)换行(n)制表符(t),ASCII字符集,基本字

3、符集,共 55 页 第 8 页,名称,2.C语言的标识符,基本标识符:变量名、函数名、文件名、数 组名、类型名规则:字母或下划线开头,后面是字母、下划线或数字,call_n test39 _string1 abccall.n 39test-string1 c2.0,例,共 55 页 第 9 页,auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeofstatic structswitch typ

4、edef union unsigned voidvolatile while,保留字(32个),3.C语言的关键字,用户不能用关键字作标识符!,共 55 页 第 10 页,4.常量在程序运行中,其值保持不变的量称为常量。常量的表示方法:数值常量 例如:10,3,2.68等符号常量 用一个符号代表一个常量,必须先定义后使用,习惯用大写字母表示。,例如:#define PI 3.1415926 main()float r,l,s;r=2;l=2*PI*r;s=PI*r*r;printf(“l=%d,s=%d”,l,s);,共 55 页 第 11 页,5.变量在程序执行期间其值可以改变的量。,有关变

5、量的规定,变量通过变量名标识,变量名和内存中的存储单元相对应。编写程序时通过变量名来存、取存储单元。变量必须先定义,后使用。,变量,8,1000H1001H1002H,255,12,共 55 页 第 12 页,命名规则:变量名由标识符表示,只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。例如:下列标识符中,不合法的变量名有:M.D.John 12%gf 1add _ce36 age*选变量名时,要做到“见名知意”例如:name,st_age,xm,nl,class,sum,共 55 页 第 13 页,许多程序设计语言都把它们能处理的数据分成若干类,这些类就是数据类型。为什

6、么要划分数据类型?不同类型的数据在计算机内表示不同;不同类型的数据能执行的运算不同;计算机能处理的问题中的数据是广义的。,2.2 C语言数据类型,共 55 页 第 14 页,C语言数据类型:整型 字符型 单精度型 算术类型 实型(浮点型)基本类型 枚举类型 双精度型 指针类型数据类型 数组 构造类型 结构体类型 共用体类型,规定:在程序中用到的数据,必须指定数据类型。,共 55 页 第 15 页,整型常量的不同数值表示方法十进制数:09八进制数:07,以0开头十六进制数:09,AF/af,以0 x或0X开头,1.整型常量,例如:100、-8、0;010、024;0 x18、0X1F,整型常量的

7、类型根据值大小默认类型例:32767的类型是int,32769类型是long。在常量后面加l或L,表示long int型 例:123L,0L,432l 都是long int型常量,2.2.1 整型数据,共 55 页 第 16 页,整型变量的形式,共六种,基本整型短整型长整型无符号整型无符号短整型无符号长整型,int short int long intunsigned intunsigned short unsigned long,在内存中占字节数(与所选系统有关),占内存字节数,224224,2.整型变量,ANSI C标准没有规定各类数据所占内存的字节数,只要求long型数据不短于int型,

8、short型不长于int型。VC+规定:short型占2个字节,int和long都占4个字节。,共 55 页 第 17 页,整型变量的定义,例:int i,j;long k,m;unsigned int x,y;,变量有值吗?,格式:类型说明符 变量列表;,C中的所有变量必须先定义后使用!,既不指定signed,也不指定unsigned,则隐含为有符号(signed),共 55 页 第 18 页,j、m、x 所占存储容量和取值范围?,例:int i,j;long k,m;unsigned int x,y;,共 55 页 第 19 页,int型数的表示范围:存储长度16位二进制(2B),0 0

9、0 0 0 0 0 0 0 0 0 0 0 0 0 1,0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1,0 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,=1,=3,最大的负数?,=-215=-32768,定点二进制补码表示 占2个字节存储 数的表示范围:-3276832767,a,=215-1=32767,最大的正数?,共 55 页 第 20 页,例:main()int a,b,c;a=32767;b=3;c=a+b;printf(c=%dn,c);,程序运行结果溢出(负数)c=-32766,1 0

10、 0 0 0 0 0 0 0 0 0 0 0 0 1 0,C,-32766的补码形式,共 55 页 第 21 页,1.实型变量,实型变量分类:单精度、双精度和长双精度型。,2.2.2 实型数据,实型变量的有关规则:,例:float a,b;double c,d;long double e,f;,共 55 页 第 22 页,2-23=|尾数|=1-2-23,实型数据在内存中的存放形式:,1个字节 3个字节,例如 十进制实型数据0.12345610-2在计算机中的存放形式为:,实型数据按指数形式存储。一个实型数据分成小数和指数部分分别存放。指数部分采用规格化的指数形式。,共 55 页 第 23 页

11、,其中,小数部分一般都采用规格化的数据形式,即:小数点放在第一个有效数字前面,使小数部分放小于1的纯小数。,共 55 页 第 24 页,2.实型常量(实型常数不区分单精度和双精度)两种表示形式:十进制数形式:由数字和小数点及正负号组成。(注意:必须有小数点)例如:23.678.678 23.指数形式:由数字、小数点、字母e或E及正负号组成。(注:e或E之前必须有数字,且后指数必须为整数)例如:3.5E-5 2e3 E2 3.6e3.5.e6 e,不合法!,3.5乘以10的-5次方,即0.000035,2乘以10的3次方,即2000,共 55 页 第 25 页,2.2.3 字符型数据,1.字符常

12、量 用单引号括起来的一个字符(只能包含一个字符)例如:a A$!abc、“a”注:a与A是 不同的字符常量。,共 55 页 第 26 页,转义字符:,转义字符的概念:是一种特殊的字符常量,用于表示常用的、但却难以用一般形式表示的不可显示字符。转义字符的表示:用一个转义标识符“”开头,后面是需要的转义字符。常用的转义字符序列的字符常量见表:,转义字符是特殊形式的字符常量,共 55 页 第 27 页,转义字符表:,转义字符 功 能 n 换行 v 垂直制表 b 退格 r 回车 f 走纸换页 t 跳到下一个制表位(7列)反斜线字符 单引号字符“双引号字符 ddd 至位八进制数表示的字符 xdd 至位十

13、六进制数表示的字符,转义符“”表示将其后的字符原来的含义进行转换,变成某种另外特殊约定的含义。,共 55 页 第 28 页,例:main()printf(“ctlanguagsberCn”);printf(“istusef165x6c”);,屏幕输出:C languageis useful,165转换为十进制为117,是ASCII的u,6c转换为十进制为108,是ASCII的l,共 55 页 第 29 页,定义形式:char占存储空间:,一个变量一个字节,2.字符变量,一个字符变量只能包含一个字符,main()char c;c=c;printf(“%c”,c);,运行结果:C,题目中有几个c,

14、哪些是等价的?,例:,共 55 页 第 30 页,a的ASCII值为97 内存中存储形式,0 1 1 0 0 0 0 1,例:ASCII码字符a、A、1 存储为:97、65、49,0 1 1 0 0 0 0 1,在ASCII范围以内,整型数据与字符型数据可以通用,整型数97 内存中存储形式,0 0 0 0 0 0 0 0,共 55 页 第 31 页,main()char a;int b;a=A;b=a+25;printf(“%c,%d,%c,%dn”,a,a,b,b);,例:,计算字符A与整型数据25的和。,程序运行结果:A,65,Z,90,共 55 页 第 32 页,3.字符串常量,字符串常

15、量是用双引号括起来的一个或多个字符。,n个字符组成的字符串常量,占内空间为 n+1 个字节。,字符串结束标记“空”字符,例:a 串长 1 This is C string 串长16“”(空格)串长1“”(不含空格)串长0,共 55 页 第 33 页,字符常量和字符串常量的区别:,在程序中,可以用字符常量或字符串常量表示单个字符,例如 a,或“a”,两者的区别如下:(1)字符串a在内存中占2个字节,而字符a 在内存中占1个字节。字符串a 字符a(2)不能将字符串赋给一个字符变量。例:char ch1,ch2;ch1=a;/*正确*/ch2=a;/*错误*/,a,0,a,共 55 页 第 34 页

16、,练习:1.以下不合法的变量名为:(A)_123(B)IF(C)e4(D)float2.指出下列字符串的长度及输出内容:“054”“x56”cta”“ntbab”,3 输出,输出V”c a,6 输出 ab,十进制为86对应”V”,“ab0efg”,“ab011efg”,2 ab,6 ab efg,十进制为9对应ASCII为”t”,共 55 页 第 35 页,在定义变量时为其指定值,方法:,int a=5;int a,b,c=5;int a5,b=5,c=5;int a=b=c=5;,1.定义变量的同时为其初始化2.初始化不是在编译时进行,而是在程序运行时完成的,2.2.4 变量的初始化,初始化

17、,共 55 页 第 36 页,2.3 运算符和表达式,运算符:描述各种操作的符号。算术运算符和算术表达式1.算术运算符 2.算术表达式:由算术运算符、常数、变量、函数和圆括号组成 例如:a+b+a*b/c+2.83.优先级:高于4.结合性:“左结合性”或称为“自左至右的结合方向”即运算对象先与左边的运算符结合。例如:a-b+c注意:是除法运算符。当两个整数相除时为整除。9/2=4;-9/2=-4;(若有一个是负数,采取向零取整)%是取余数运算符,只能作用于两个整数。运算结果的 符号与被除数的符号一致。9%2=1;-9%2=-1;9%-2=1;,共 55 页 第 37 页,基本算术运算符,共 5

18、5 页 第 38 页,运算符属性:,(1)优先级 当若干个运算符同时出现在表达式中时,优先级规定了运算的先后次序。优先级有15级。C语言把圆括号作为运算符,规定它的优先级最高(15级),从而保证优先运算圆括号内的式子,逗号运算符的级别最低,规定为1级。(2)结合性 当若干个具有相同优先级的运算符相邻出现在表达式中时,结合性规定了运算的先后次序。分为“从左到右”和“从右到左”两个结合方向。大多数运算符的结合方向为“从左到右”;单目运算符、赋值运算符和条件运算符的结合方向“从右到左”(单目运算符是指作用于一个操作对象的运算符)。,共 55 页 第 39 页,例:将下列数学表达式:,写成符合C语言规

19、则的表达式如下:(a+b+c)/(sqrt(a)+b*(sin(x)+sin(y)+sin(z),其中sqrt(a)和sin(x)、sin(y)、sin(z)都是数学函数的引用,表达式中用了三层括号,以保证表达式的运算顺序。,共 55 页 第 40 页,2.3.2 赋值运算符和赋值表达式1.一般赋值运算符:=赋值表达式:由赋值运算符将一个变量和一个表达式连接起来的式子。形式:变量名=常量或表达式功能:将右边常量或表达式的值赋给左边的变量。例:a=3;b=c+d;说明:赋值后,原来左边的值被右边表达式的值替换;如果右边表达式的值的类型与左边变量的类型不一 致,以左边变量的类型为准,将表达式值的类

20、型转换为左边变 量的类型。结合方向“从右向左”。例:x=y=a+b;,共 55 页 第 41 页,例:main()int a;double b=3.5;a=b+2.1;printf(“a=%d”,a);,运行结果:a=5,共 55 页 第 42 页,2.复合赋值运算符复合赋值运算符:在赋值符“=”之前加上其它运算符共有10种复合赋值运算符:+=,=,z的值?2.0-(1.5+2.0)=-1.5 double型,共 55 页 第 43 页,2.3.3 逗号运算符和逗号表达式,1.逗号运算符:即“,”优先级:所有运算符中级别最低的运算符。2.逗号表达式 形式:表达式1,表达式2,表达式n 求解过程

21、:顺次求解表达式1,表达式2 最后求解表达式n。逗号表达式的值为表达式n的值。结合性:左结合例如:a=3*5,a*4 a=3*5,a*4,a+5 x=(a=4%3,a+1,a*10),60,20,10,共 55 页 第 44 页,2.4 数据类型转换,转换原则 整型、实型和字符型可以混合运算 一般类型数据先转换为标准型 不同类型的要先转换为相同类型形式 自动进行-隐式转换 强制进行-显式转换,共 55 页 第 45 页,转换规则:int unsigned int long int unsigned long int double short,char float,(1)float 型数据一律转

22、换成double 型数据。(2)char 和short int 型数据一律转换成 int 型数据 以上两条转换原则说明:即使两个操作数类型相同,但只要它们同属 char,short int 或 float 类型,则转换一定发生。,竖直方向的转换表示那些一定要发生的转换;横向表示操作数的类型转换的方向。,2.4.1 不同数据类型的数据间的混合运算,优先级低的向优先级高的转换,共 55 页 第 46 页,f的类型?,int double double,double,已知:int i;long e;float f;double d;f=10+a+i*f-d/e,double,运算过程中的类型转换不是

23、变量本身数据类型的转换,例:,共 55 页 第 47 页,2.4.2 强制类型转换 将指定表达式的值转换为指定类型.形式:(类型名)(表达式)例如:(double)(a+b),说明:()表达式应用括号括起例如:(int)(x+y);(int)x+y;()在强制类型转换时,得到一个所需类型的中间变量,原来变量类型未发生变化。例如:float x=8.6;int y;y=(int)x;,共 55 页 第 48 页,2.5 自增、自减运算符(、),作用:使变量的值增或减,如:i,i(使用之前,先使i的值加(减)1)i,i(使用之后,使i的值加(减)1)+i 先执行i=i+1,再使用i的值 i+先使用

24、i的值,再执行i=i+1例如:int a=1,b;b=+a;b=a+;,说明:(1)+、-为单目运算符(2)+、只能用于变量,而不能用于常量或表达式。例如:10+,(x+y)+,+a,b+中合法的为:(3)自增、自减运算符为右结合性(即自右至左)。例如:a+(a+)(4)单独作一个语句使用时,两种形式的结果一样。,共 55 页 第 49 页,i=2;k=i+i+i+;,56,执行完分号再自增,i=?k=?,算一算?,共 55 页 第 50 页,2.6 位运算 位运算是针对二进制数的运算,通常只适用于整数数据。C语言中提供的位运算符有:、&、1.按位取反运算符形式:A功能:把A的各位都取反,(即

25、0变1,1变0)例如:int A=179,共 55 页 第 51 页,2.按位与运算符&形式:A&B功能:对A的各位与B的对应位进行比较,如果两者都为1,A&B对应位上的值为1,否则为0。例如:int A=179(二进制10110011)int B=169(二进制10101001),共 55 页 第 52 页,3.按位或运算符|形式:A|B功能:对A的各位与B的对应位进行比较,如果两者中有一个 为1,A|B对应位上的值为1,否则为0。例如:int A=179(二进制10110011)int B=169(二进制10101001),共 55 页 第 53 页,4.按位异或运算符 形式:AB功能:对

26、A的各位与B的对应位进行比较,如果两者不同,AB对应位上的值为1,否则为0。例如:int A=179(二进制10110011)int B=169(二进制10101001),共 55 页 第 54 页,5.左移运算符 形式:An(其中 n为一个大于0的整型表达式)功能:把A的值向左移动n位,右边空出的n位用0填补。当左移时移走的高位中全都是0时,相当于对A作n 次乘 以2的运算。例如:int A=27(二进制00011011),共 55 页 第 55 页,6.右移运算符形式:An(其中 n为一个大于0的整型表达式)功能:把A的值向右移动n位,左边空出的n位用0填补。相当于对A作n 次除以2的运算。例如:int A=179(二进制10110011),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号