第3章数据类型表达式.ppt

上传人:本田雅阁 文档编号:3426529 上传时间:2019-08-24 格式:PPT 页数:55 大小:887.54KB
返回 下载 相关 举报
第3章数据类型表达式.ppt_第1页
第1页 / 共55页
第3章数据类型表达式.ppt_第2页
第2页 / 共55页
第3章数据类型表达式.ppt_第3页
第3页 / 共55页
第3章数据类型表达式.ppt_第4页
第4页 / 共55页
第3章数据类型表达式.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《第3章数据类型表达式.ppt》由会员分享,可在线阅读,更多相关《第3章数据类型表达式.ppt(55页珍藏版)》请在三一文库上搜索。

1、第3章 最简单的C程序设计(1) 数据类型、运算符与表达式,一、C语言的保留字和标识符 二、基本数据类型 1、常量和变量的概念 2、整型、浮点型、字符型、字符串 3、变量的初始化 三、算术运算符和算术表达式 四、自增、自减运算符 五、赋值运算符和赋值表达式 六、表达式中不同数据类型的混合运算 七、补充:逗号运算符和逗号表达式,一、C语言的保留字和标识符,保留字:C语言规定的具有特定意义的字符串,也称关键字。 C语言的保留字(关键字)共有32个(C89) 教材365页 附录B C语言中的关键字(第3版) C语言的保留字(关键字)共有37个(C99) 教材378页 附录C C语言中的关键字(第4版

2、),标识符:用来标识变量名、符号常量名、数组名、类型名、函数名等的有效字符序列。,C语言对标识符的规定:,(1)只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 (2)长度: 在TC中最多允许32个字符,建议不要超过8个 VC:255,例:如果系统规定标识符长度为8,那么x1234567ABC和x1234567XY会被视为同一标识符。,标识符中应注意的问题:,标识符命名时应有意义,尽量做到见名知义。 如longth用来表示长度,time用来表示时间,PI用来表示圆周率。,在C语言中,标识符大小写敏感。 如ABC、aBC、abc分别代表3种不同的标识符,标识符不能与C语言的保留字、系

3、统标准库函数同名。,为合法标识符,yes? 123 go to a_80% if,program to_ _to file_2 ab1_c3,为非法法标识符,(含有不合法字符“?”),(出现非法字符“”),(标识符中不允许有空格),(第一个字符不能为数字),(与关键字相同),二、基本数据类型(第3版 C89),二、基本数据类型(第4版 C99),派生类型,数组类型( ),结构体类型(struct),共用体类型(union),函数类型,枚举类型(enum),复数浮点型(float_complex,double_complex,long long_comple),基本整型(int),短整型(sho

4、rt int),长整型(long int),*双长整型(long long int),字符型(char),*布尔型(bool),1、常量和变量的概念,常量:在程序执行的整个过程中,其值不能改变 的量。,字面常量或直接常量:直接以值的形式出现的常量,如100(整型常量),0.5(实型常量), a(字符常量), ”boy” (字符串常量).,符号常量:用标识符表示的常量,#define PRICE 30 void main() int num,total; num=10; total = num * PRICE; printf(“total= %d”,total); ,定义符号常量PRICE,代表

5、30,哪些是保留字? 哪些是标识符?,变量:在程序执行的过程中,其值可以改变的量。,如 y=x+5; 其中x和y都是变量,y随着x的值不同而不同,注意: 变量代表内存中具有特定属性的一个存储单元, 用来存放数据,即变量的值。,x,10,存储单元,即变量,变量名: 存储空间的名字,通过它对存储空间进行访问,是一个标识符,通常用小写字母表示,变量的值: 存储单元中存储的数值。 变量x的值是10,变量类型: 决定存储单元的大小 整型变量、实型变量、字符型变量等,变量的特征: 变量名、变量的值、变量的类型,注意:C语言规定:变量必须先定义,后使用。,变量的定义语句: 类型说明符 变量名1,变量名2,;

6、,例: int x; 定义整型变量x int a,b; 定义两个整型变量a,b,类型说明符和变量名之间要用空格隔开,注意:以下变量定义形式是错误的 int a,int b; int a;b;,2、整型,1)整型常量 十进制整型:能出现数字09,可带正负号 如:0,11,95,-2 八进制整型:以数字0开头的数字串,能出现数字07 如:011(十进制9),0111(十进制73) 十六进制整型:以0x开头的,能出现数字09,字母af或AF 如:0x11(十进制17),0xa5(十进制165),下列常量错在哪儿? 028、123a 、o12,2)整型变量,说明:数据类型所占字节数随编译系统的不同而不

7、同,2 4,整型数据在内存中以补码表示,对有符号数,最高位为符号位,其余位为数值位 eg:用一字节表示有符号数:,对无符号数unsigned,全部位都为数值,整型变量举例:,为了保存年龄: short age; 或 unsigned short age; int age; long age;,为了保存一个城市人口: int people; 或 long people; unsinged people; unsigned long people;,要保存全球的人口: int count;,60亿,超出int或long类型的范围,整型变量举例:,#include void main( ) int

8、i,j; /*定义整型变量i,j*/ i=1; /*分别给整型变量i,j赋值*/ j=2; printf(“i=%d,j=%d”,i,j); /*按十进制格式输出整型变量i,j的值*/ ,注意: 整型常量也分类别 如:100,是int型常量 123u, 89U,是unsigned型常量 0l,34L,是long int型常量 参考P41 整型变量的分类(第3版) 参考P44 整型变量的分类(第4版),3、浮点型(实型),十进制小数形式:由数字与小数点组成(必须有小数点)。 如 1.23,-123.,0.0123,.0,0. 指数形式,如123e3或123E3都代表123103 注意字母e或E之

9、前必须有数字,后面必须是整数,1)浮点型常量,E-5,.1234e1.2,6.5E,为合法的浮点型常量,为非法的浮点型常量,如:1E-5,.1234e12,2.e0,6.5E-15,2)浮点型变量,实型变量举例:,保存商品的单价,总价: float price,total; 保存精确的计算结果,精确到10位有效数字: double result;,浮点型变量举例:,#include void main( ) float a,b; /*定义单精度浮点型变量a,b*/ double c; /*定义双精度浮点型变量c*/ a=123.45; /*分别给浮点型变量a,b,c赋值*/ b=32.56;

10、c=123.45; printf(“a=%f b=%f c=%f”,a,b,c); /*输出a,b,c的值*/ ,注意: 浮点型常量也分类别: 如:123.3,是double类型 34.5f,8.9F,是float类型,4、字符型,1)字符常量:分为两类 用单撇号括起来的一个字符 如 : a, 9, (空格)是合法字符常量 ”a”, 99 是非法字符常量,转义字符:以(反斜杠)开头的特殊形式的字符。,如: n ,r ,123 ,x3b,转义字符 功 能 n 回车换行符,光标移到下一行行首 r 回车不换行,光标移动到本行行首 t 横向跳格(8位为一格,光标跳到下一格起始位置,如第9或17位等)

11、b 退一格,光标往左移动一格 f 走纸换页 ,将当前位置移到下页开头 用于输出反斜杠字符“” 用于输出单引号字符“” ” 用于输出双引号字符“” ddd 1到3位八进制数ddd对应的ASCII码字符 xhh 1到2位十六进制数hh对应的ASCII码字符 a 警告,产生声音或视觉信号 ? 一个问号(?),输出此字符 v 垂直制表符,将当前位置移到下一个垂直制表对齐点,课堂练习,183 w “b” x1b正确的字符常量是:,正确的是:x1b,不能有8,没有这样的转义字符,字符常量不用双引号,2)字符变量:char,占1个字节空间,只能存放一个字符。,存储特点: 在字符变量中实际上存储的是字符的AS

12、CII码,其存储形式与整数的存储形式相同。,例如:char c1,c2; c2=a; 定义了字符型变量c1,c2,把a存放到c2中,如 A65,B 66,Z 90 a97,b98, z122 048 , 149, 957,注意: 1.字符数据与整型数据可相互赋值,直接运算。,例 int a,x; char c; a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */ c=97; /* c=a; */,2.大小写字母转换 小写字母减32得到相应的大写字母, 如:a-32 得到A 大写字母加32得到相应的小写字母 如:B+32 得到b,

13、3. 字符1和整数1是不同的概念: 字符1只是代表一个形状为1的符号,在需要时按原样输出,在内存中以ASCII码形式存储,占1个字节 1是十进制整数,是int型整数,字符常量与字符串常量不同,5、字符串常量 定义:用一对双撇号(” ”)括起来的字符序列。 如: ”hello” ”Mary” ”aaan ” 存储:每个字符串尾自动加一个 0 作为字符串结束标志,例: char ch; ch= ”A”;,练习: printf(”Youre my good friend!”n”); 在显示器上输出什么?,”Youre my good friend! ”,5、变量赋初值,格式: 类型说明符 变量1=常

14、数1,变量2=常数2,; 例:int a=2; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1;(语法错误) int m=10,n; (被定义的变量的一部分赋初值),变量赋初值是指在定义变量时给变量赋值,这个值称为变量的初值。,三、算术运算符和算术表达式,1、算术运算符:算术运算符用于各类数值运算。 基本的算术运算符: 、 (正、负号运算符) 、*、/、%(取余),只需要一个运算对象,单目运算符,除法运算符“/”进行求商运算。对于不同类型的运算对象,除法表达式计算结果的类型也会不同。,例:计算x/y 如果x,y是整型,则结果为整

15、型,小数部分被略去。 5/2结果为2,整型量 2/5结果为0,整型量 如果x,y其中一个为浮点型量,则结果为浮点型 5.0/2.0结果为2.5,“”是求余运算。ab计算a除以b后的余数,也是a模b的值。它要求两个运算对象必须是整型,其结果也是整型量。,例:52结果为1 25结果为2 10%3.0 语法错误,扩充:% 和 / 的非常常用的用法: 求一个整数各位上的数字。 例如:对任意一个三位数n,分别求出个、十、百位上的数字。 eg:n=456 个位:456%10 得到 6 十位:456/10%10(或456%100/10)得到5 百位:456/10/10 (或456/100)得到4,2.算术表

16、达式 用算术运算符和括号将运算对象(操作数)连接起来的、符合C语法规则的式子,称为C算术表达式。 如:1+3.5*2-10 (x+y)*3-6+a 表达式的值 表达式的运算结果,一般数学式 a(b+c)+dac,算术表达式 (a*(b+c)+d)*a*c 将方括号改成圆括号,*不能省略,x/(x+y)+1.0/(x*y) 其中不能出现分数,改用除法运算符,圆括号不能缺少,3.14159*r*r/2.0 其中 为非字母字符,要用浮点型常量代替,例:将数学公式改为算术表达式,3、算术运算符的优先级和结合性 优先级: 高 - -* / % - + - 低 (2) (3) (4) 注意:可以用( )来

17、改变运算的顺序. 如 (3+5)*8/(4.0-2) 结合性: 运算符的“结合性”决定同优先级的运算符对操作数的运算次序 左结合性:自左向右运算 右结合性:自右向左运算 + - *为左结合性 例如:a+b+c-d 根据左结合性,等价于(a+b)+c)-d - (求负值运算)为右结合性,四、自增、自减运算符,类别: 单目运算,运算优先级为2,运算符: + 使变量的值增 1 - 使变量的值减 1,运算规则: 后缀 i i 前缀 i i,结合性:右结合,例如: int main() int x,m,n; x=10; m=x+; n=+x; return 0; ,该语句执行后,m=10,x=11,该语

18、句执行后,n=12,x=12,例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,自增、自减运算只能用于变量,不能用于常量和表达式。,注意:,例 +6, +(a+b)均为非法的运算,自增、自减运算符高于基本算术运算符。,自增、自减运算符的运算顺序。,五、赋值运算符和赋值表达式,1、简单赋值运算符 运算符:= 表达式格式:变量表达式 优先级:14,低于算术

19、运算符 结合性:右结合 运算规则:把=右边表达式的值赋给左边变量,说明:,赋值运算符左边必须是变量而不能是表达式;,赋值表达式的值是赋值号左边变量被赋值后的值;,例:j+3=j a*b=c*4,例:x=5 表达式的值为5 (赋值表达式) 8+(x=4) 表达式值是12 (算术表达式),如果赋值号两边的类型不一致,则将赋值号右边表达式的值的类型转换成赋值号左边变量的类型;,赋值语句可以连续进行。,例:a=b=c=0,根据右结合性,该表达式等价于: a=(b=(c=0),例 int i; i=2.56; /结果i=2;,例 float f; int i; i=10; f=i; 则 f=10.000

20、00,2、复合赋值运算,算术运算符“+ * / %”和赋值运算符“=”结合起来,形成复合赋值运算符。,+= :加赋值运算符; 如a+=3,等价于 a=a+3 -= :减赋值运算符; 如a-= b+3,等价于 a=a- (b+3) *=、/=、%= 与此类似,注意:,复合运算符在书写时,两个运算符之间不能有空格。 复合赋值运算符的结合性和优先级等同于简单的赋值运算符“=”。 复合运算符左边必须是变量; 复合运算符右边的表达式计算完成后才参与复合赋值运算;,表达式中不同数据类型的混合运算,当表达式中的数据类型不同时,要进行类型转换。,转换方式 自动(隐式)转换:系统自动把数据由低级类型向高级转换。

21、 强制转换:将表达式的运算结果强制转换成指定的数据类型。,如下表达式是合法的: 13.14159+ 0+ A,自动转换规则:,横向必做,纵向选做,例:数据类型自动转换实例,有如下变量类型: char c; int i; float f; double d; 计算表达式: c+f+i+d,char float int double,c + f + i + d,int,double,double,double,该表达式值的类型是double类型,double,double,double,强制类型转换运算符:(类型名),格式:(目标类型名)(表达式),注意: 1)强制转换属单目运算,运算优先级为2。

22、 2)强制转换得到的是中间变量类型,原变量类型不变。 如:int n; float x=1.5f; n = (int)x; 强制转换后n的值是1,而x仍然是1.5,类型是float,例:int x=2, y=3; float z=1.6f; (float)(x+y); (将x+y的值转换为float类型,得5.0) (int)z + x;(先将z转换为整型1,再与x相加,得3),练习: 计算表达式的值: (int)(double)9/2) - 9%2,答案:3,补充:逗号运算符与逗号表达式,逗号运算符,或称顺序求值运算符 运算符:, 运算优先级:最低,15级 结合性:左结合,逗号表达式:由逗号

23、运算符连接起来的两个或两个以上的表达式。 格式: 表达式1,表达式2, ,表达式n 逗号表达式的值 表达式n的值,求解过程:先求表达式1的值,再求表达式2的值,直至求出表达式n的值。整个表达式的值为表达式n的值。,例: 1) x=0, y=100 2) x=5*8, 6+9 3) x=1, y=99, z=(x+y)*5 4) x=(i=10, j=5, i*j) 5) x=i=10, j=5, i*j,先后给x,y的赋值,表达式的值为100,先把x赋值为40,表达式的值为15,给x,y赋值后,计算z的值,表达式的值为500,等价于x50,先给x,i赋值,再给j赋值,计算i*j,表达式的值为50,求解过程:先求表达式1的值,再求表达式2的值,直至求出表达式n的值。整个表达式的值为表达式n的值。,例 a=3*5,a*4 a=3*5,a*4,a+5 例 x=(a=3,6*3) x=a=3,6*a 例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c);,/a值15,表达式值60,/a值15,表达式值20,/赋值表达式,表达式值18,x值18,/逗号表达式,表达式值18,x值3,/1,2,3,/3,2,3,作业 下节课上课交,见 第3章(1)作业.doc,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1