第3章数据类型运算符与表达式精选PPT.ppt

上传人:石*** 文档编号:48771574 上传时间:2022-10-07 格式:PPT 页数:73 大小:4.45MB
返回 下载 相关 举报
第3章数据类型运算符与表达式精选PPT.ppt_第1页
第1页 / 共73页
第3章数据类型运算符与表达式精选PPT.ppt_第2页
第2页 / 共73页
点击查看更多>>
资源描述

《第3章数据类型运算符与表达式精选PPT.ppt》由会员分享,可在线阅读,更多相关《第3章数据类型运算符与表达式精选PPT.ppt(73页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第3章 数据类型运算符与表达式1第1页,本讲稿共73页第三章第三章 数据类型、运算符和表达式数据类型、运算符和表达式n第一节第一节 C的数据类型的数据类型n第二节第二节 常量常量n第三节第三节 变量变量n第四节第四节 算术运算符和算术表达式算术运算符和算术表达式n第五节第五节 赋值运算符和赋值表达式赋值运算符和赋值表达式n第六节第六节 逗号运算符和逗号表达式逗号运算符和逗号表达式n第七节第七节 各类数据间的混合运算各类数据间的混合运算2第2页,本讲稿共73页第一节 C的数据类型n基本类型基本类型整型整型字符型字符型实型(浮点型)实型(浮点型)单精度、双精度单精度、双精度枚举型枚举型n构造类型构

2、造类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型n指针类型指针类型n空类型空类型3第3页,本讲稿共73页第一节 C的数据类型n说明:说明:1)标识符标识符,是指用来,是指用来标识程序中用到的标识程序中用到的变量变量名名、函数名函数名、类型名类型名、数组名数组名、文件名文件名及及符号符号常量名常量名等的有效字符序列。等的有效字符序列。标识符的命名规则标识符的命名规则是:是:由字母(大小写)、数字及下划线组成,由字母(大小写)、数字及下划线组成,且第一个字符必须是字母或下划线且第一个字符必须是字母或下划线。(举例说。(举例说明标识符的合法性判定)明标识符的合法性判定)2)C语言语言英

3、文大小写不同英文大小写不同,并把下划线定义,并把下划线定义为字母,故有为字母,故有53个个字母。字母。4第4页,本讲稿共73页第一节 C的数据类型n说明:说明:3)关键字(也称保留字)关键字(也称保留字)是是C语言中预先定语言中预先定义的标识符,用来命名义的标识符,用来命名C语言程序中的语言程序中的语句语句、数据类型数据类型和和变量属性变量属性等等。有固定的意义,不能。有固定的意义,不能重新说明,不能作用户定义符使用。一共有重新说明,不能作用户定义符使用。一共有32个个。都用。都用小写字母小写字母表示。表示。5第5页,本讲稿共73页第一节 C的数据类型n说明:说明:4)常量常量又称常数,是指在

4、程序运行过程中又称常数,是指在程序运行过程中其其值不能改变值不能改变的量,常量分为不同的类型。的量,常量分为不同的类型。5)变量变量是指在程序运行过程中是指在程序运行过程中其值可以被改其值可以被改变变的量。不同类型的变量在内存中占不同的存的量。不同类型的变量在内存中占不同的存储单元,以便用来存储相应的变量的值。储单元,以便用来存储相应的变量的值。6第6页,本讲稿共73页第二节 常量 常量包括常量包括直接直接常量(或称常量(或称字面字面常量)和常量)和符号符号常常量。量。直接常量有直接常量有整型常量整型常量,实型常量实型常量,字符常量字符常量与与字符串常量字符串常量。n2.1 符号常量符号常量n

5、2.2 整型常量整型常量n2.3 实型常量实型常量n2.4 字符型常量字符型常量n2.5 字符串常量字符串常量7第7页,本讲稿共73页2.1 符号常量 用标识符表示的常量称为符号常量。用标识符表示的常量称为符号常量。习惯习惯上,符号常量名用上,符号常量名用大写大写,如,如PI,MIN。符号常量。符号常量要要先定义,后使用先定义,后使用。注意注意:1)符号常量符号常量不同于变量,值在其所在的函数内不不同于变量,值在其所在的函数内不能改变。能改变。2)使用符号常量可以使用符号常量可以使程序清晰,修改容易使程序清晰,修改容易。8第8页,本讲稿共73页2.1 符号常量符号常量是用宏替换符号常量是用宏替

6、换#define 定义:定义:例#define PI 3.1415#define LETTER x 均合法。例#define A 100;#define A,B 26 均不合法。例1:#define PI 3.14159 main()float r,s,area;scanf(%f,&r);s=2*PI*r;area=PI*r*r;printf(s=%7.2f,area=%7.2f,s,area);9第9页,本讲稿共73页有以下三种数制形式表示:有以下三种数制形式表示:十进制:如十进制:如 123;-60;0八进制:以八进制:以0开始,如开始,如 0123表示(表示(123)8十六进制:以十六进

7、制:以0 x开始,如开始,如0 x123表示表示(123)162.2 整型常量10第10页,本讲稿共73页2.3 实型常量n小数形式:小数形式:由数字、数符和小数点组成。由数字、数符和小数点组成。注意必须有小数点。注意必须有小数点。如如 123.0 .123 0.0 12.n指数形式:指数形式:数字部分数字部分e指数部分。指数部分。字母字母E/e前必须有数字,字母前必须有数字,字母E/e后后 必须为整数(必须为整数(13位)。位)。如如123e2 123E211第11页,本讲稿共73页 字符常量是用字符常量是用单撇号单撇号括起来的一个字符。括起来的一个字符。例如:例如:a,x,d,?,字符常量

8、的值实际上是一个数字值。如字符常量字符常量的值实际上是一个数字值。如字符常量 0 ,其,其ASCII为为48,所以存储的实际值为,所以存储的实际值为48。字符常量可以字符常量可以象整数一样参与运算。象整数一样参与运算。2.4 字符型常量12第12页,本讲稿共73页 转义字符:转义字符:将反斜杠后面的字符转变成另外的意义将反斜杠后面的字符转变成另外的意义 例例:n表表示示换换行行符符,表表示示字字符符。转义字符转义字符 功能功能 转义字符转义字符 功功 能能 a 响铃响铃 反斜杠字符反斜杠字符 b 退一格退一格 单引号字符单引号字符 f 走纸换页走纸换页 双引号字符双引号字符 n 换行换行?问问

9、号号 r 回回车车 t 横横向向跳跳格格 ddd 13位位8进制数代表的字符进制数代表的字符 xhh 12位位16进制数代表的字符进制数代表的字符2.4 字符型常量13第13页,本讲稿共73页 转义字符:转义字符:将反斜杠后面的字符转变成另外的意义将反斜杠后面的字符转变成另外的意义例:例:101,代表代表ASCII码值码值65的字符的字符A,x41,也代表也代表ASCII码值码值65的字符的字符A。而而0,表示空操作,字符串结束符。表示空操作,字符串结束符。printf(“”D:xao.wps”);输出输出”D:xao.wps”2.4 字符型常量14第14页,本讲稿共73页 main()cha

10、r c1=101,c2=x42;printf(atbc tbABCn);printf(xyzt%c%c,c1,c2);结果?结果?a bc ABC xyz A B 例例2:15第15页,本讲稿共73页2.5 字符串常量字符串常量是用一对字符串常量是用一对双引号双引号括起来的字符序列。括起来的字符序列。如如:“CHINA”,“a”,“X+Y”。字符串常量在内存中的存放:每一个字符均以其字符串常量在内存中的存放:每一个字符均以其ASCII码存放,且码存放,且最后添加一个最后添加一个“0”作为字符串作为字符串的结束标志的结束标志 例:字符串常量“CHINA”存放在内存中的情况是:CHINA017第1

11、7页,本讲稿共73页 因此,因此,字符常量字符常量a和字符串常量和字符串常量“a”的区别的区别是:是:字符字符a:1字节(值为字节(值为97)字符串字符串“a”:2字节(值为字节(值为97,0)注注:在表达一个字符串时,要时刻记着尾部有个在表达一个字符串时,要时刻记着尾部有个 0字符结束整个字符串。字符结束整个字符串。2.5 字符串常量18第18页,本讲稿共73页第三节 变量n3.1 变量的概念变量的概念n3.2 变量名变量名n3.3 整型变量整型变量n3.4 实型变量实型变量n3.5 字符型变量字符型变量19第19页,本讲稿共73页3.1 变量的概念n程序运行过程中其值可以改变的量,称为变量

12、程序运行过程中其值可以改变的量,称为变量。系统为程序中的每一个变量开辟一个存储单元,如:main()int a;a=2;printf(a=%dn,a);a=4;printf(a=%dn,a);程序运行结果?程序运行结果?3 a变量名变量名变量值变量值存储单元存储单元图示:图示:20第20页,本讲稿共73页3.2 变量名 变量有两个要素变量有两个要素:n1 1)变量名)变量名:每个变量都必须有一个名字,即变每个变量都必须有一个名字,即变量名。量名。变量名由字母、数字和下划线组成,且第变量名由字母、数字和下划线组成,且第一个字符必须是字母或下划线。一个字符必须是字母或下划线。如果是字母通常如果是字

13、母通常使用小写字母,不使用大写字母。使用小写字母,不使用大写字母。n如如:name:name,nono,x x,k k,i i,j j,stu_namestu_name等。等。n变量名中不能含有变量名中不能含有运算符运算符、括号括号等等。命名遵循顾。命名遵循顾名思义原则,且不宜过长。名思义原则,且不宜过长。C C区分大小写字母。区分大小写字母。21第21页,本讲稿共73页3.2 变量名 变量有两个要素变量有两个要素:n2 2)变量值)变量值:每个变量都有特定的值,且可以改每个变量都有特定的值,且可以改变。变。在程序中,通过变量名来引用变量的值在程序中,通过变量名来引用变量的值。变量以变量名为标

14、志变量以变量名为标志,在内存中占据一定的存,在内存中占据一定的存储单元,在该存储单元中存放变量的值。每个变储单元,在该存储单元中存放变量的值。每个变量占用若干字节,具体与计算机系统有关。量占用若干字节,具体与计算机系统有关。系统以变量名来区别不同变量系统以变量名来区别不同变量,可以引用变量,可以引用变量名代表其存储单元,为其赋值;也可以引用变量名代表其存储单元,为其赋值;也可以引用变量名代表其值,使用该变量的值。名代表其值,使用该变量的值。如何区分?如何区分?22第22页,本讲稿共73页3.2 变量名 变量的定义变量的定义n所有的变量必须在赋值使用之前定义。所有的变量必须在赋值使用之前定义。定

15、义变定义变量的一般形式是量的一般形式是:n type type variable_list;variable_list;(变量定义语句变量定义语句)注注:ntypetype为为C C语言中有效类型语言中有效类型;nvariable_listvariable_list为变量列表,多个变量之间用为变量列表,多个变量之间用,隔开。隔开。n如如:int i,j,k;float a;:int i,j,k;float a;23第23页,本讲稿共73页3.2 变量名n变量名变量名“先定义,后使用先定义,后使用”的目的是:的目的是:1.凡凡未被事先定义的,不能作为变量名未被事先定义的,不能作为变量名,这可以,

16、这可以保证变量名使用的正确。保证变量名使用的正确。2.每一个变量被指定为一确定类型,每一个变量被指定为一确定类型,在编译时就在编译时就能为其分配相应的存储单元。能为其分配相应的存储单元。3.指定每一个变量属于一个类型,便于在编译时,指定每一个变量属于一个类型,便于在编译时,据此据此检查该变量所进行的运算是否合法。检查该变量所进行的运算是否合法。24第24页,本讲稿共73页3.3 整型变量1、分类、分类nsigned int 整型整型nsigned short int 短整型短整型nsigned long int 长整型长整型nunsigned int 无符号整型无符号整型nunsigned s

17、hort int 无符号短整型无符号短整型nunsigned long int 无符号长整型无符号长整型25第25页,本讲稿共73页2、各类型数据长度、取值范围、各类型数据长度、取值范围 n数据类型数据类型 所占位数所占位数 取值范围取值范围nint 16 -3276832767 nshort 16 -3276832767nlong 32 -21亿亿21亿亿nunsigned int 16 065535nunsigned short 16 065535nunsigned long 32 042亿亿 26第26页,本讲稿共73页3、整型变量的定义、整型变量的定义n所有的变量需先定义类型所有的变量

18、需先定义类型int a,b,c;/*指定指定a,b,c为整型变量为整型变量*/unsigned count;/*指定指定count为无符号整型变量为无符号整型变量*/long s;/*指定指定s为长整型变量为长整型变量*/n有些变量可以预先设置初值:有些变量可以预先设置初值:int a=0,b,c;/*指定指定a,b,c为整型变量,为整型变量,a a的初值为的初值为0 0*/int a=0,b=0,c=0;/*指定指定a,b,c为整型变量,为整型变量,a a、b b、c c的初值为的初值为0 0*/27第27页,本讲稿共73页4、整型数据在内存中的存放形式、整型数据在内存中的存放形式n定义一整

19、型变量定义一整型变量i int i=10;/*指定指定i为整型变量为整型变量,并赋以整数并赋以整数10*/每一个整型变量在内存中占每一个整型变量在内存中占2个字节,数值是以补码表示的个字节,数值是以补码表示的n数据存放示意图数据存放示意图 n数据在数据在内存中内存中的存放示意图的存放示意图 i 10 i0 0 0 0 0 0 0 00 0 0 0 1 0 1 028第28页,本讲稿共73页4、整型数据在内存中的存放形式、整型数据在内存中的存放形式n定义一整型变量定义一整型变量i int i=-10;/*指定指定i为整型变量为整型变量,并赋以整数并赋以整数-10*/n数据存放示意图数据存放示意图

20、 n数据在内存中的存放示意图数据在内存中的存放示意图 将该数的绝对值的二进制形式,按位取反再加将该数的绝对值的二进制形式,按位取反再加1 i -1010 的原码0 0 0 0 0 0 0 00 0 0 0 1 0 1 0取反得-10的反码1 1 1 1 1 1 1 11 1 1 1 0 1 0 1再加1,得-10的补码1 1 1 1 1 1 1 11 1 1 1 0 1 1 029第29页,本讲稿共73页5、举几个简单例子、举几个简单例子例例4:#include“stdio.h”void main()int a,b,c,d;unsigned int u;a=12;b=-24;u=10;c=a+

21、u;d=b+u;printf(“a+u=%d,b+u=%dn”,c,d);运行结果输出运行结果输出a+u=22,b+u=-14 30第30页,本讲稿共73页5、举几个简单例子、举几个简单例子例例5:整型数据的溢出。整型数据的溢出。#include“stdio.h”void main()int a,b;a=32767;b=a+1;printf(“%d,%dn”,a,b);运行结果输出运行结果输出32767,-32768 若把若把70000赋值就发生溢出。赋值就发生溢出。31第31页,本讲稿共73页6、练习题、练习题 请编写程序请编写程序szys.c,输入两个整数,输入两个整数n和和m,计,计算以

22、下表达式的值算以下表达式的值:n sum=n+mn diff=n-mn prod=n*mn quot=n/m 上机时调试完成。上机时调试完成。32第32页,本讲稿共73页3.4 实型变量1、分类、分类 所占位数所占位数 取值范围取值范围nfloat 单精度 32 -3.4*10-38 3.4*1038 ndouble 双精度 64 -1.7*10-308 1.7*10308 nlong double长双精度 128 -1.2*10-4932 1.2*1049322、变量的定义、变量的定义float x,y;/*指定x,y为单精度实型变量*/double z;/*指定z为双精度实型变量*/33第

23、33页,本讲稿共73页3.4 实型变量3、说明举例、说明举例 在在PC机中,机中,float占内存占内存4个字节,个字节,double占占8个字个字节。节。float的有效数字的有效数字6-7位,位,double 的有效数字的有效数字15-16位,位,long double的有效数字的有效数字18-19位。位。例例6:实型数据的舍入误差。实型数据的舍入误差。#include“stdio.h”void main()float a,b;a=123456.789e5;b=a+20;printf(“%fn”,b);运行结果输出运行结果输出 12345678848.000000 仅前仅前8位是正确。位是

24、正确。34第34页,本讲稿共73页3.4 实型变量3、说明举例、说明举例 在在PC机中,机中,float占内存占内存4个字节,个字节,double占占8个字节。个字节。float的有效数字的有效数字6-7位,位,double 的有的有效数字效数字15-16位,位,long double的有效数字的有效数字18-19位。位。例例7:实型数据的舍入误差。实型数据的舍入误差。void main()float s=2.5555;(s=2.5558)s=s*s;/四舍五入有效数字四舍五入有效数字 printf(“s=%f”,s);请注意运行结果请注意运行结果。35第35页,本讲稿共73页3.4 实型变量

25、练习题:练习题:请输入请输入x,计算以下表达式的结果。,计算以下表达式的结果。nfun1(x)=2xx+1.212x-1.5436第36页,本讲稿共73页3.5 字符变量1、变量的定义、变量的定义char c1,c2;/*指定指定c1,c2c1,c2为字符型变量为字符型变量*/2、字符型数据的存储、字符型数据的存储一个字符变量在内存中占一个字节,并以一个字符变量在内存中占一个字节,并以ASCII码存码存储储,存储形式与整型一样,可以和整数进行运算。,存储形式与整型一样,可以和整数进行运算。例例8:main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;prin

26、tf(“%c,%cn”,c1,c2);printf(“%d,%dn”,c1,c2);结果:结果:A,B 65,6637第37页,本讲稿共73页3.5 字符变量3、字符数据与整型数据可互相赋值字符数据与整型数据可互相赋值 例例9:#include“stdio.h”void main()int i;char c;c=97;i=c;printf(“%c,%d n”,c,c);printf(“%c,%d n”,i,i);输出输出:a,97 c,99 38第38页,本讲稿共73页3.5 字符变量3、字符数据与整型数据可互相赋值字符数据与整型数据可互相赋值 说明:说明:ASCII字符中的标准字符(码值为字

27、符中的标准字符(码值为0-127)的最高位(即最左位)为的最高位(即最左位)为0,按整数输出为正,按整数输出为正值,若使用值,若使用码值为码值为128-255的字符其在内存中的字符其在内存中最高位为最高位为1,如如254的二进制表示的二进制表示 11111110 ,376被看成负数,被看成负数,若按整数输出如下:若按整数输出如下:char c=376;printf(“%d”,c););输出输出 -2;因为因为 2的补码为的补码为 11111110。39第39页,本讲稿共73页第四节 算术运算符和算术表达式 C运算符运算符n C语言中有以下几类运算符:语言中有以下几类运算符:1)算术运算算术运算

28、:+,-,/,*,%(模运算)(模运算)2)关系运算关系运算:,=,=,=,!=3)逻辑运算逻辑运算:!,&,|4)位运算位运算:,|,&n 另外,还有一些很重要的运算,以后逐渐进行另外,还有一些很重要的运算,以后逐渐进行讲解。讲解。40第40页,本讲稿共73页第四节 算术运算符和算术表达式4.1 基本算术运算符基本算术运算符4.2 运算符的优先级和结合性运算符的优先级和结合性4.3 自增、自减运算符自增、自减运算符41第41页,本讲稿共73页4.1 基本算术运算符 (加法运算或正号运算符)(加法运算或正号运算符)(加法运算或正号运算符)(加法运算或正号运算符)(减法运算或负号运算符)(减法运

29、算或负号运算符)*(乘法运算符)(乘法运算符)(除法运算符)(除法运算符)(除法运算符)(除法运算符)%(求余运算符,或称模运算符)(求余运算符,或称模运算符)42第42页,本讲稿共73页-(负号运算符)*/%+-(加减运算符)我最高!我最低!43第43页,本讲稿共73页4.1 基本算术运算符注:注:(1)两个整数相除结果为整数,多数机器采用两个整数相除结果为整数,多数机器采用“向向零取整零取整”方法。方法。如:如:5/3=1;-5/3=-1(2)参与参与+,-,*,/运算的两个数中有一个为实数,运算的两个数中有一个为实数,则结果为则结果为double型。如:型。如:6/2.0的结果为的结果为

30、3.0(3)模模%运算符运算符(或称或称求余求余运算符运算符)两侧的运算量均两侧的运算量均为整型量为整型量。如:。如:55%1244第44页,本讲稿共73页从左到右从左到右4.2 运算符的优先级和结合性n算术表达式算术表达式用用算术运算符和括号算术运算符和括号将运算对象连接起来的、符合将运算对象连接起来的、符合C语法规则的式子称为语法规则的式子称为C算术表达式算术表达式。运算对象包括。运算对象包括常量、变量和函数常量、变量和函数等。等。n运算符有优先级和结合性运算符有优先级和结合性在求表达式的值时,要按照在求表达式的值时,要按照优先级的高低依次优先级的高低依次计算计算如果运算符两侧如果运算符两

31、侧优先级相同优先级相同,则按规定的则按规定的结合方向结合方向进行。进行。n算术运算符的结合方向算术运算符的结合方向45第45页,本讲稿共73页4.2 运算符的优先级和结合性 书写表达式应注意以下几点:书写表达式应注意以下几点:1)乘号不能省乘号不能省。如:如:ab应写成应写成 a*b 2)C语言中语言中只有圆括号只有圆括号,可以嵌套使用,但,可以嵌套使用,但左、右括号左、右括号 必须匹配。必须匹配。3)避免两个运算符)避免两个运算符并置并置。如。如a*b/-c应写为应写为:a*b/(-c)46第46页,本讲稿共73页4.2 运算符的优先级和结合性 书写表达式应注意以下几点:书写表达式应注意以下

32、几点:4)由于)由于两个整数相除两个整数相除结果仍为整数,所以要转结果仍为整数,所以要转换成实数运算。如换成实数运算。如 5/12应该写成应该写成5.0/12或或5/12.0 5)三角函数三角函数的自变量使用弧度。如的自变量使用弧度。如sin50 应写应写成成sin(50*3.1415926/180)例例:3x2+4xysin56-|x-y|e2.3 的表达式为:的表达式为:3*x*x+4*x*y*sin(56*3.14/180)-fabs(x-y)*exp(2.3)47第47页,本讲稿共73页4.3 自增、自减运算符n n+运算符的作用是使变量的值增运算符的作用是使变量的值增运算符的作用是使

33、变量的值增运算符的作用是使变量的值增1 1 1 1。n n-运算符的作用是使变量的值减运算符的作用是使变量的值减运算符的作用是使变量的值减运算符的作用是使变量的值减1 1 1 1。n n常见的用法有:常见的用法有:常见的用法有:常见的用法有:+i,-i+i,-i+i,-i+i,-i 在使用在使用在使用在使用i i i i前,使前,使前,使前,使i i i i的值加(减)的值加(减)的值加(减)的值加(减)1 1 1 1i+,i-i+,i-i+,i-i+,i-在使用在使用在使用在使用i i i i后,使后,使后,使后,使i i i i的值加(减)的值加(减)的值加(减)的值加(减)1 1 1 1

34、48第48页,本讲稿共73页n n已知已知 i=5(1)j=i+;j=?i=?(2 2)j=+i;j=?i=?j=+i;j=?i=?56664.3 自增、自减运算符49第49页,本讲稿共73页例例:int x,y,z;x=y=2;z=3;y=x+-1;(;(x=3,y=1)y=+x-1;(;(x=4,y=3)y=z-+1;(z=2,y=4)y=-z+1;(z=1,y=2)4.3 自增、自减运算符50第50页,本讲稿共73页注意:注意:1)+,-运算符只适用于对运算符只适用于对整型变量整型变量操作,而操作,而不能作用于常量或表达式,如不能作用于常量或表达式,如 5+或或(a+b)-是是错误的。错

35、误的。2)+,-的结合方向是的结合方向是自右到左自右到左。如。如j=3;printf(”%d”,-j+);则输出则输出-3,后使后使j值增为值增为4。3)使用使用+,-会出现付作用。会出现付作用。(易出错易出错)4.3 自增、自减运算符51第51页,本讲稿共73页思考:思考:1、(i+)+(i+)+(i+)结果?结果?2、(+i)+(+i)+(+i)结果?结果?3、i+j是是(i+)+j还是还是i+(+j)?(p59)4、printf(“%d,%d”,i,i+)结果?结果?(p59)建议:建议:在使用自增和自减运算时使用括号在使用自增和自减运算时使用括号,以,以免生成错误(不确定)的结果。免生

36、成错误(不确定)的结果。52第52页,本讲稿共73页第五节 赋值运算符和赋值表达式n5.1 赋值运算符赋值运算符n5.2 复合的赋值运算符复合的赋值运算符n5.2 赋值表达式赋值表达式53第53页,本讲稿共73页5.1 赋值运算符n简单的赋值就是把简单的赋值就是把一个表达式的值一个表达式的值赋给一赋给一个变量。个变量。例如:例如:i=5 i=j+154第54页,本讲稿共73页5.3 赋值表达式n由赋值运算符将一个变量和一个表达式连接起由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。来的式子称为赋值表达式。n形式:形式:变量赋值运算符表达式变量赋值运算符表达式 例如:例如:x=3

37、 y=x+3 n对赋值表达式求解的过程是对赋值表达式求解的过程是:将赋值运算符右:将赋值运算符右侧的表达式的值赋给左侧的变量。赋值表达式侧的表达式的值赋给左侧的变量。赋值表达式的值就是被赋值的变量的值。的值就是被赋值的变量的值。n结合性结合性55第55页,本讲稿共73页n注意:注意:n一般形式的赋值表达式中的一般形式的赋值表达式中的“表达式表达式”又可以又可以是一个赋值表达式。如:是一个赋值表达式。如:a=b=8按照按照从右到左从右到左的结合性等价于的结合性等价于a=(b=8)假设:假设:int a,b,c;a=b=c=5;分析下列赋值表达式的计算过程:分析下列赋值表达式的计算过程:a=5+(

38、c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)(a=3*5)=3*4 a=1/b=256第56页,本讲稿共73页5.2 复合的赋值运算符n在赋值符在赋值符“=”之前加上其它运算符,可以之前加上其它运算符,可以构成构成复合的运算符复合的运算符 运算符运算符=等价于等价于 =运算符运算符 如:如:m+=n*3 等价于等价于 m=m+(n*3)57第57页,本讲稿共73页5.2 复合的赋值运算符n运算符运算符可以是可以是二元二元运算符,如四则运算符、运算符,如四则运算符、移位运算符等。移位运算符等。n再例如:再例如:i+=2 等价于等价于 i=i+2 a*=b+5 等价于等价于 a=

39、a*(b+5)x%=3 等价于等价于 x=x%358第58页,本讲稿共73页n注意:注意:n赋值表达式也可以包含复合的赋值运算符赋值表达式也可以包含复合的赋值运算符。n设设a的值为的值为6,计算,计算a+=a-=a*a先先进行进行a*a的计算,结果为的计算,结果为36再再进行进行a-=36的计算,相当于的计算,相当于a=a-36=-30最后最后进行进行a+=-30的计算,相当于的计算,相当于a=a-30=-60 问:问:j=k+=32*k合法吗?什么结果合法吗?什么结果 printf(“%d”,i=20);又是如何呢?又是如何呢?59第59页,本讲稿共73页5.4 赋值时进行的类型转换n将实型

40、数据(包括单、双精度)赋给整型变量时将实型数据(包括单、双精度)赋给整型变量时,舍弃实,舍弃实数的小数部分。数的小数部分。例例 int i=3.56;结果结果 使使i的值为的值为3。n将整型数据赋给单、双精度变量时将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式数值不变,但以浮点数形式存储到变量中。存储到变量中。例例 float f=23;结果结果 使使f的值为的值为23.000000 例例 double d=23;则以则以23.00000000000000存储存储.扩展扩展16位有效数字。位有效数字。n将一个将一个double型数据赋给型数据赋给float变量时变量时,截取其前面,截

41、取其前面7位位有效数有效数字,存放到字,存放到float变量的存储单元(变量的存储单元(32位)中。位)中。n将一个将一个float 型数据赋给型数据赋给double变量时变量时,数值不变,有效位数,数值不变,有效位数扩展到扩展到16位位,在内存中以,在内存中以64位存储。位存储。60第60页,本讲稿共73页5.4 类型转换n字符型数据赋给整型变量时字符型数据赋给整型变量时,由于字符只占,由于字符只占1个个字节,而整型变量为字节,而整型变量为2个字节,因此将字符数据个字节,因此将字符数据(8位)放到整型变量低位)放到整型变量低8位中。具体分为以下位中。具体分为以下两种情况:两种情况:若系统将字

42、符处理为无符号的量若系统将字符处理为无符号的量,则将字符,则将字符的的8位放到整型变量的低位放到整型变量的低8位,高位,高8位补位补0。例例 c=376;11111110 =0000000011111110 若系统将字符处理为带符号的量若系统将字符处理为带符号的量,如果字符,如果字符最高位为最高位为0,则整型变量高,则整型变量高8位补位补0;如果字符最;如果字符最高位为高位为1,则整型变量高,则整型变量高8位补位补1。这样做的目的。这样做的目的是使数值保持不变。是使数值保持不变。例例 c=376;11111110 =1111111111111110 61第61页,本讲稿共73页5.4 类型转换

43、n将一个将一个int、short、long型数据赋给一个型数据赋给一个char型型变量时变量时,只将其,只将其低低8位位原封不动地送到原封不动地送到char型变型变量(即截断)。量(即截断)。例:例:i=289 得到字符得到字符!n将带符号的整型数据赋给将带符号的整型数据赋给long型变量时型变量时,要进行,要进行符号扩展,将整型数的符号扩展,将整型数的16位送到位送到long型变量的低型变量的低16位中,位中,如果如果int型数据为正值,则型数据为正值,则long型变量的型变量的高高16位补位补0;如果如果int型数据为负值,则型数据为负值,则long型变型变量的高量的高16位补位补1。以保

44、持数值不变。以保持数值不变。例:例:k=8;(k=-8);62第62页,本讲稿共73页5.4 类型转换n若将一个若将一个long型数据赋给一个型数据赋给一个int型变量型变量,只将,只将long型数据中的低型数据中的低16位原封不动地送到整型变量位原封不动地送到整型变量中(即截断)。中(即截断)。例:例:int a;long b=8;a=b;结果结果 a=8int a;long b=65536;a=b;结果结果 a=063第63页,本讲稿共73页5.4 类型转换n将将unsigned int型数据赋给型数据赋给long int型变量时型变量时,不存在符号扩展问题,只需将高位补不存在符号扩展问题

45、,只需将高位补0。n将将unsigned 类型数据赋给一个占字节数相同的类型数据赋给一个占字节数相同的整型变量时整型变量时,是将,是将unsigned型变量的内容照原型变量的内容照原样送到非样送到非unsigned型变量中,但如果数据范围型变量中,但如果数据范围超过相应的整型范围,则会出现数据错误。超过相应的整型范围,则会出现数据错误。例如:例如:main()unsigned int a=65535;int b;b=a;printf(“%d”,b);64第64页,本讲稿共73页5.4 类型转换n将非将非unsigned int型数据赋给长度相同的型数据赋给长度相同的unsigned型变量时型变

46、量时,也是原样照赋(连原有的,也是原样照赋(连原有的符号位也作为数值一起传送)。符号位也作为数值一起传送)。例例10:main()unsigned a;int b=-1;a=b;printf(“%u”,a);运行结果为:运行结果为:65535 65第65页,本讲稿共73页第六节 逗号运算符和逗号表达式n在逗号表达式中,逗号是一种运算符。在逗号表达式中,逗号是一种运算符。n形式如下形式如下:表达式表达式1 1,表达式,表达式2 2n由由逗逗号号隔隔开开的的一一对对表表达达式式从从左左向向右右进进行行计计算算,其其求求解解过过程程为为:先先求求解解表表达达式式1 1,再再求求表表达达式式2 2,整

47、个逗号表达式的值是表达式,整个逗号表达式的值是表达式2 2的值。的值。n逗号运算符是所有运算符中级别最低的。逗号运算符是所有运算符中级别最低的。66第66页,本讲稿共73页n例如例如 a=4*6,a+5a=4*6,a+5 整个逗号表达式的值为整个逗号表达式的值为2929n注意注意u一个逗号表达式又可以与另一个表达式组成一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,例如:一个新的逗号表达式,例如:(a=4*6,a+5a=4*6,a+5),a+6,a+6 整个表达式的值为整个表达式的值为303067第67页,本讲稿共73页第七节 各类数据间的混合运算nC语言语言允许数据值从一种类型转换

48、成另一种类允许数据值从一种类型转换成另一种类型。型。在进行运算时,在进行运算时,不同类型的数据要先转换不同类型的数据要先转换成同一类型,然后进行运算。成同一类型,然后进行运算。转换的规则按图转换的规则按图所示。所示。n高高 double float long unsigned 低低 int char,short 68第68页,本讲稿共73页第七节 各类数据间的混合运算n说明:说明:横向横向向左的箭头表示当运算对象为不同类横向向左向左的箭头表示当运算对象为不同类横向向左的箭头表示的箭头表示必定必定的转换,如字符型的转换,如字符型(char)数据数据和短整型和短整型(short)数据必定先转换成整

49、型数据必定先转换成整型(int),float型数据在运算时一律先转换为双精度型型数据在运算时一律先转换为双精度型(double),以提高运算精度。以提高运算精度。纵向纵向的箭头表示当运算对象为不同类型时转换的箭头表示当运算对象为不同类型时转换的方向型时转换的方向。数据总是的方向型时转换的方向。数据总是由低级别向由低级别向高级别高级别转换。转换。69第69页,本讲稿共73页nC语语言言提提供供一一种种“强强制制类类型型转转换换”运运算算符符,将将一一个类型的变量强制转换为另一种类型。个类型的变量强制转换为另一种类型。n一般形式为:一般形式为:(类型标识符)(表达式)(类型标识符)(表达式)n例如

50、:例如:k=(int)(int)x+(float)i)/*得到整型数得到整型数*/(float)(x=85)/*得实型单精度数得实型单精度数*/70第70页,本讲稿共73页再例如:再例如:若若x原为实型变量且值为原为实型变量且值为2.6,在执行,在执行 i=(int)x 后得到一个整数后得到一个整数2,并把它赋给整型变量,并把它赋给整型变量i,但但x仍为实型,值为仍为实型,值为2.6。71第71页,本讲稿共73页作业:作业:n1.请输入请输入x,计算以下表达式的结果。,计算以下表达式的结果。y=+n2.输入两个自然数,求它们的商和余数。输入两个自然数,求它们的商和余数。n3.输入一个自然数,判

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

当前位置:首页 > 生活休闲 > 资格考试

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁