C语言第2章C语言的基本数据类型与表达式.ppt

上传人:wuy****n92 文档编号:70101774 上传时间:2023-01-16 格式:PPT 页数:55 大小:834KB
返回 下载 相关 举报
C语言第2章C语言的基本数据类型与表达式.ppt_第1页
第1页 / 共55页
C语言第2章C语言的基本数据类型与表达式.ppt_第2页
第2页 / 共55页
点击查看更多>>
资源描述

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

1、第第 2 2 章章 C C语言的基本数据类型语言的基本数据类型与表达式与表达式 2.1 C2.1 C语言的基本数据类型语言的基本数据类型 2.2 2.2 常量与变量常量与变量 2.3 2.3 运算符与表达式运算符与表达式 2.4 2.4 数据类型转换数据类型转换C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页教学目的和基本要求:教学目的和基本要求:要求学生清楚数据类型与变量、常量的关系,掌握各种常量的性质和定义,掌握表达式中各种运算符的功能和特点,明白产生副作用的原因,了解数据类型的相互转换规则。教学重点:教学重点:数据类型、常量定义,运算符与表达式。C语言程序

2、设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 存取数据必须先确定数据的编码方式、存储格式和存取数据必须先确定数据的编码方式、存储格式和所占的存储长度,所占的存储长度,C语言中把这三者结合起来,给出语言中把这三者结合起来,给出几种固定的形式,这些形式就是最基本的几种固定的形式,这些形式就是最基本的数据类型数据类型。2.1 C2.1 C语言的基本数据类型语言的基本数据类型为什么要设置数据类型?为什么要设置数据类型?在计算机中使用一定长度的存储单元一定长度的存储单元(通常是字节的倍数)来存储数据。存储的编码方式编码方式有:原码、反码、补码、ASCII码 存储的存储格式存储格

3、式有:定点型、浮点型 其中,用于存储数据的存储单元的长度决定了用于存储数据的存储单元的长度决定了数据取值范围的大小。数据取值范围的大小。C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页例如:【例2.1】计算圆的面积,半径为 5 cm。程序如下:main()float r r,areaarea;r r=5 5;areaarea=3.143.14*r r*r r;printf(%fn,areaarea);运算结果是输出运算结果是输出运算结果是输出运算结果是输出圆的面积:圆的面积:圆的面积:圆的面积:78.50000078.500000程序中用到的数据:程序中用到的数

4、据:程序中用到的数据:程序中用到的数据:r r、areaarea、5 5、3.143.14对数据进行的运算:对数据进行的运算:对数据进行的运算:对数据进行的运算:*、=例例jc2_1C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页分析:计算机操作处理时,要完成以下工作:在内存中给半径 r 和运算结果 area 开辟存储空间,存放它们的值。应该留多大的地方来存放它们的值?数据 5 和 3.14 与 r、area 不同,它们是在编写程序时就给出确定的值,在运算过程中不会改变。这样的数计算机怎么处理?对整数 5 和小数3.14,计算机存放时是否有区别?涉及数据类型涉及

5、数据类型的基本知识的基本知识C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 字符型(字符型(charchar)整型(整型(int,short,long,unsigned,int,short,long,unsigned,long longlong long)单精度型(单精度型(floatfloat)实型实型 双精度型(双精度型(doubledouble)长双精度(长双精度(long long_comple)long long_comple)枚举类型(枚举类型(enumenum)数组类型(数组类型()构造类型构造类型 结构体类型(结构体类型(structstruc

6、t)共用体类型(共用体类型(unionunion)指针类型(指针类型(*)空类型(空类型(voidvoid)基本类型基本类型数据类型数据类型一、数据类型概述本章讨论本章讨论本章讨论本章讨论基本类型数据基本类型数据基本类型数据基本类型数据C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 变量:变量:指指以以标识标识符符为为名字,其名字,其值值可以改可以改变变的量。的量。在学习各种数据类型之前,我们先简单了解一下常量常量和变量变量的概念。后面的章节中将会详细介绍。常量常量:指在程序运行中指在程序运行中,其数值不能被改变的量。其数值不能被改变的量。变量变量 代表计算机

7、内存中的某一存储空间,代表计算机内存中的某一存储空间,变量的类型决定了该存储空间的长度和其变量的类型决定了该存储空间的长度和其中存放数据的编码方式及存储格式。中存放数据的编码方式及存储格式。变量的类型也决定了该存储空间中存放变量的类型也决定了该存储空间中存放数据的数据形式和取值范围。数据的数据形式和取值范围。C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 *八进制的数码范围为八进制的数码范围为07;018 *十六进制的十六进制的数码除了数字数码除了数字0 09 9外外,还使用英文字母还使用英文字母a f(或或A F)表示表示1015。如:如:0 x1e *整型

8、数据均以整型数据均以二进制补码二进制补码形式存储形式存储二、整型(采用定点整数的存储格式,只能表示纯整数)1 1、整型常量:整型常量:(1)(1)十进制形式十进制形式:与数学上的整数表示相同;与数学上的整数表示相同;例如例如:12,-100,0:12,-100,0(2)(2)八进制形式八进制形式:在数码前加数字在数码前加数字0 0;例如例如:012=1*8:012=1*81 1+2*8+2*80 0=10(=10(十进制)十进制)(3)(3)十六进制形式十六进制形式:在数码前加在数码前加0X0X(数字数字0和字母和字母X)。)。例如例如:0 x12=1*16:0 x12=1*161 1+2*1

9、6+2*160 0=18(=18(十进制)十进制)问题:问题:问题:问题:为什么要采用补为什么要采用补为什么要采用补为什么要采用补码?码?码?码?如何表示?如何表示?如何表示?如何表示?C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 2、整型变量的分类:整型变量的分类:根据数据所占的存储长度的不同分为根据数据所占的存储长度的不同分为:int、short、long、long long;同样存储长度的数据又分同样存储长度的数据又分unsigned、signed;故可组合出八种类型(参考课本故可组合出八种类型(参考课本P46P46)。)。3、整型变量的值域:整型变量

10、的值域:由机器中数据的存储长度决定由机器中数据的存储长度决定思考:思考:int a=20000,b=20000,c;c=a+b;c的值为多少?的值为多少?如果如果c定义为定义为long型是否能解决问题?型是否能解决问题?类型名称类型符bit取值范围整型(短整型)signed int signed short int 16-215215-1(-3276832767)无符号整型unsigned int160 216-1(065535)长整型signed long int32-231231-1无符号长整型unsigned long int320 232-1注意:C标准没有具体规定各种数据类型占用存储

11、单元的长度,在不同的编译系统中规定不尽相同,如在VC6.0中short为2B,int和long都为四个字节C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页注意注意三、实型1 1、常量:常量:(1)(1)十进制小数形式:十进制小数形式:由数字和小数点组成;由数字和小数点组成;例如例如:3.4,4.,.3:3.4,4.,.3。(2)(2)指数形式:指数形式:“十进制小数十进制小数”+“e(+“e(或或E)”+“E)”+“十进制数整十进制数整数数”。例如例如:12.5e-6:12.5e-6 表示表示12.51012.510-6 。小数点不能单独出现;小数点不能单独出现

12、;0.0.0 .0 .e e或或E E的两边必须有数,且其后面必须为整数;的两边必须有数,且其后面必须为整数;如:如:6E0.2 6E0.2 e5e5 C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页实型数据的类型 单精度实型数据 float,分配4 Byte双精度实型数据double,分配 8 Byte实型数据的存储 单精度实型单精度实型单精度实型单精度实型指数部分指数部分指数部分指数部分31 30 (831 30 (8位位位位)23)23 63 62 (1163 62 (11位位位位)52)52小数部分小数部分小数部分小数部分22 022 051 051 0

13、 小数的符号位小数的符号位隐藏隐藏“1”2、实型变量的分类及值域实型变量的分类及值域:C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页实型数据的类型及规定 C标准并未具体规定各种实型数据所占字节数,也不规定具体小数和指数部分的位数。一般而言,小数部分位数多,数据表示的有效数字多,精度就高;而指数部分位数多,则表示的数据范围更大。(参照课本P51说明)有效数字的意义?有效数字的意义?有效数字的意义?有效数字的意义?类型类型符Byte绝对值的范围有效数字单精度型float40以及1.2 10-38 3.4 103878 位双精度型double80以及2.3 10-3

14、08 1.7 103081516位C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 字符形式字符形式 功能功能 n n 换行换行 t t 横向跳格横向跳格 b b 退格退格 r r 回车回车 反斜杠字符反斜杠字符 单引号字符单引号字符 ddd 8ddd 8进制数表示的进制数表示的ASCIIASCII码对应的字符码对应的字符 xhh 16xhh 16进制数表示的进制数表示的ASCIIASCII码对应的字符码对应的字符四、字符类型1 1、常量:常量:(1)(1)用单引号括起来的一个字符;如:用单引号括起来的一个字符;如:A、1、?等等。(2)(2)用单引号括起来的由

15、反斜杠用单引号括起来的由反斜杠()引导的转义字符。引导的转义字符。C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页4 4、字符串常量:字符串常量:是用一对双引号括起来的字符序列。是用一对双引号括起来的字符序列。注意:每个字符串的后面都有一个注意:每个字符串的后面都有一个00结束符。结束符。如:如:“SHANGHAI”SHANGHAI”,“AbcdeFGHijk”AbcdeFGHijk”,“How are you”How are you”。注意注意 a a与与“a”a”的区别。的区别。例如:字符例如:字符A A的的ASCIIASCII码为:码为:65D65D(十进

16、制)(十进制)=41H=41H(十六进制)(十六进制)=101Q=101Q(八进制)(八进制)字符字符A A可以表示为可以表示为AA、x41x41、101101。2、字符型变量的分类:字符型变量的分类:char char 和和 unsigned charunsigned char;3 3、值域值域(字符型可参与数学运算,也可看成一种一字节的整型变量)(字符型可参与数学运算,也可看成一种一字节的整型变量)每每个个字字符符型型数数据据在在内内存存中中占占一一个个字字节节;包包括括ASCIIASCII字字符符表表中的所有字符(可显示字符和非显示字符)。中的所有字符(可显示字符和非显示字符)。C语言程

17、序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页一、常量、符号常量及常变量 常量是指在程序运行中常量是指在程序运行中,其数值不能被改变的量。其数值不能被改变的量。常量又可分为直接常量和符号常量。常量又可分为直接常量和符号常量。2.2 2.2 常量与变量常量与变量C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 120、-100、0;0120、072;0 xFFFF、0 x1e、0X28AF,0XED4;120L,200L;长整型常量长整型常量 3.14、-3.1、5.12E-6;a、#、n、101;099、12f、0 xg、48EA;01

18、9.5、1e-08;实型常量只能用十进制形式表示实型常量只能用十进制形式表示 2.1E10.2、E-6、6.4E+4.8、E9;changsha、+?ab;、p、ab;1、直接常量:直接常量:是在程序中直接引用的数据。是在程序中直接引用的数据。请请判判断断这这些些常常量量正正确确与与否否:C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 定义形式定义形式:#define 标识符标识符 常量数据常量数据 例如例如:#define PI 3.14159 在程序预处理时,凡是出现标识符在程序预处理时,凡是出现标识符PI的地方都将用的地方都将用数据数据3.14159来替

19、换。来替换。如如:2*2.3*PI 就就等价于等价于 2*2.3*3.14159。变量是指变量是指以以标识标识符符为为名字,其名字,其值值可以改可以改变变的量。的量。变量代表计算机内存中的某一存储空间,该存储空间变量代表计算机内存中的某一存储空间,该存储空间 中存放的数据就是变量的值。中存放的数据就是变量的值。在同一程序块中,在同一程序块中,变量变量不能被重复定义。不能被重复定义。使用变量时必须使用变量时必须“先定义,后使用先定义,后使用”。2、符号常量符号常量 是用标识符来表示一个数据;是用标识符来表示一个数据;在程序不能给它赋值。在程序不能给它赋值。二、变量3、常变量(C99中使用)con

20、st int a=3;注意符号常量和常变量的区别(课本P42)C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页1、定义形式:定义形式:类型标识符类型标识符 变量名变量名1,变量名变量名2,变量名变量名3.;自己设定,满足自己设定,满足标识符的规定。标识符的规定。如:如:int,int,float,charfloat,char;不可省;不可省注意注意int a=5,b=3;int a=5,b=3;int a=b=c=3;int a=b=c=3;int a,b,c;a=b=c=3;int a,b,c;a=b=c=3;例如例如:int a,b,c;float x,y;

21、char c1,c2;或或 int c1,c2;定义变量就是在内存中划出一块相应类型的存储空间存放该变量的值。C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 mainmain()int x int x,y y,z z,w w;/*/*定义定义x x,y y,z z,w w为整型变量为整型变量*/unsigned int k unsigned int k;/*/*定义定义k k为无符号整型变量为无符号整型变量*/x=10 x=10;y=-20y=-20;k=30k=30;z=x+kz=x+k;w=y+kw=y+k;printfprintf(“x+k=%dx+k=

22、%d,y+k=%dn”y+k=%dn”,z z,w w);例例2-2:程序运行结果为:程序运行结果为:x+k=40 x+k=40,y+k=10y+k=10 变量根据作用域的不同可分为变量根据作用域的不同可分为局部变量局部变量和和全局变量全局变量,根据存,根据存储方式的不同可分为储方式的不同可分为静态存储变量静态存储变量和和动态存储变量动态存储变量,这些我们将,这些我们将在第六章中详细介绍。在第六章中详细介绍。C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页2.3 运算符和表达式主要内容:算术运算符和算术表达式赋值运算符和赋值表达式关系运算符和关系表达式逻辑运算符

23、和逻辑表达式位运算符和位运算表达式条件运算符和条件表达式逗号运算符和逗号表达式其他运算符及其运算C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页运算符的有关概念作用:对运算对象完成规定的操作运算类型:按运算对象分:单目、双目、三目按功能分:算术、赋值、关系、逻辑条件、逗号、位、其他C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页运算符的优先级和结合性 优先级优先级优先级优先级指各种运算符号的运算优先顺序例如:算术运算优先于关系运算 算术运算中先*/后+-l l结合性结合性结合性结合性 指运算符号和运算对象的结合方向指运算符号和运算

24、对象的结合方向指运算符号和运算对象的结合方向指运算符号和运算对象的结合方向 分为:从左向右分为:从左向右分为:从左向右分为:从左向右(左结合左结合左结合左结合)和从右向左和从右向左和从右向左和从右向左(右结合右结合右结合右结合)例如:例如:例如:例如:算术运算符为算术运算符为算术运算符为算术运算符为左结合左结合左结合左结合 a-ba-b+4 4 赋值运算符为赋值运算符为赋值运算符为赋值运算符为右结合右结合右结合右结合 a=b=5a=b=5(C C语言规定见教材语言规定见教材语言规定见教材语言规定见教材 附录附录附录附录C C)C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页

25、下一页下一页本章涉及的运算符本章涉及的运算符+-*/%+-+-=+=-=*=/=%=&=|=!=&|!&|?:,&sizeof (数据类型标识符)类型种类算术运算符赋值运算符关系运算符逻辑运算符位运算符条件运算符逗号运算符其他运算符C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页表达式的有关概念表达式的有关概念什么是表达式由运算符将运算对象连接成的式子,它描述了一个具体的求值运算过程。计算表达式的值按照运算符的运算规则求值求值时注意运算符的优先级和结合性表达式值的类型自动转换强制转换 C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一

26、页例如:例如:表达式:150+b*212.456 b=(+a)-2a/=a*=(a=2)f=abc-a|+b&c+max=ab?a:b a=3,a+=3,a*a 1/(float)a+6 C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页%(%(取余取余)()(注意:取余运算的操作数只能是整数,且结注意:取余运算的操作数只能是整数,且结 果的符号与前一操作数的符号相同果的符号与前一操作数的符号相同)一、一、算术运算符和算术表达式算术运算符和算术表达式1 1、运算符运算符 +(+(加加):3+43+4、+3+3 -(-(减减):3-53-5、-5-5 *(*(乘乘)

27、:3*53*5 /(/(除除):5/25/2、5.0/2 5.0/2(注意,此二种形式,结果不同)(注意,此二种形式,结果不同)5%35%3的值为的值为2 2;-5%3-5%3的值为的值为-2-2;5%(-3)5%(-3)的值为的值为2 2;-5%(-3)-5%(-3)的值为的值为-2-2;12.3%3 12.3%3 若若a%b a%b 的结果为的结果为0 0,则有,则有a a能被能被b b整除整除C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 2 2、算术表达式算术表达式 用算术运算符和括符将操作数连接起来的式子。用算术运算符和括符将操作数连接起来的式子。优

28、先级:()优先级:()*、/、%+%+、-结合性:从左至右;结合性:从左至右;表达式的值:表达式的值:数值型数值型(int(int、longlong、unsignedunsigned、floatfloat、double)double);例如:例如:已知:已知:float a=2.0;float a=2.0;int b=6,c=3;int b=6,c=3;求解:求解:a*b/c-1.5+a+fabs(-5)=a*b/c-1.5+a+fabs(-5)=?C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 float a=2.0;int b=6,c=3;float a=

29、2.0;int b=6,c=3;a*b/c-1.5+a+fabs(-5)a*b/c-1.5+a+fabs(-5)12.012.0/3/354.0 4.0-1.5-1.52.5 2.5 +97(int)+97(int)99.5 99.5 +5+5104.5104.5(double)(double)思考思考 int a=1,b=2;表达式表达式a/b+3的结果是多少的结果是多少?int a=10000,b=30000;表达式表达式a+b的结果是多少?的结果是多少?如何修改?如何修改?double floatunsigned long long unsigned int int char,short

30、C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页3 3、自增自减运算自增自减运算+-是单目运算符有前缀和后缀两种形式 前缀形式:先自增(自减)再引用;后缀形式:先引用再自增(自减);功能:前缀形式 +a 等价于 a=a+1 -a 等价于 a=a 1 后缀形式 a+等价于 a=a+1 a-等价于 a=a 1表达式的值会不同表达式的值会不同表达式的值会不同表达式的值会不同C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页例如例如当 a5 时 +a 表达式的值为 6,且 a6 a+表达式的值为5,且 a6 b=+a 等价于 a=a+1;b

31、=a 表达式的值为6,且 a=6,b=6 b=a+等价于 b=a;a=a+1 表达式的值为5,且 a=6,b=5 C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页说明:说明:+和-的运算对象只能是变量(或运算结果是变量的表达式),不能是常量(或运算结果是数值的表达式)。例如:5+、(a+2)+不合法。具有右结合性,结合方向为从右到左。例如:a+等价于 -(a+)如果有多个运算符连续出现时,C系统尽可能多的从左到右将字符组合成一个运算符例如:i+j 等价于 (i+)+j -i+-j 等价于-(i+)+(-j)C语言程序设计C语言程序设计C语言程序设计C语言程序设计

32、上一页上一页下一页下一页main()int a=5;printf(%d%dn,a,a+);说明(续):说明(续):对函数参数的求值顺序:Turbo C系统先计算最右边的参数值,再依次计算左面的参数值。【例例例例2.32.3】有多个函数参数且为同一变量自增的运算处理。有多个函数参数且为同一变量自增的运算处理。有多个函数参数且为同一变量自增的运算处理。有多个函数参数且为同一变量自增的运算处理。输出结果:输出结果:输出结果:输出结果:6 56 5运行例运行例2.3C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页说明(续):说明(续):【例例例例2.42.4】有多个函数

33、参数且有多个函数参数且有多个函数参数且有多个函数参数且为为为为同一同一同一同一变变变变量多次自增的运算量多次自增的运算量多次自增的运算量多次自增的运算处处处处理。理。理。理。main()int a=5;printf(%d%dn,a,(a+)+(a+);输出结果:输出结果:输出结果:输出结果:7 117 11运行例运行例2.4C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页特殊的:设特殊的:设i=3i=3,j=4j=4,k=i+jk=i+j,k=i=j=k=i=j=再看几个例子:再看几个例子:如:设如:设i=3i=3,k=(i+)+(i+)+(i+)k=i=k=(

34、i+)+(i+)+(i+)k=i=96如:设如:设a=3,b=(a+)+(a+)b=a=a=3,b=(a+)+(a+)b=a=65设设a=3,b=(+a)+(a+)b=a=a=3,b=(+a)+(a+)b=a=85设设a=3,b=(a+)+(+a)b=a=a=3,b=(a+)+(+a)b=a=75设设a=3,b=(+a)+(+a)b=a=a=3,b=(+a)+(+a)b=a=105744main()int a=5,b,c,k;k=a+(b=a+)+(c=a+);printf(%d%d%d%dn,a,b,c,k);main()int a=5,b,c;printf(%d%d%d%dn,a,b,c,

35、a+(b=a+)+(c=a+);思考!思考!C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 1 1、6 6种关系运算符:种关系运算符:=!=!=2 2、关系表达式:关系表达式:用关系运算符将表达式连接起来的式子用关系运算符将表达式连接起来的式子 优先级:优先级:(=)(=)(=!=)(=!=)结合性:自左至右;结合性:自左至右;表达式的值:表达式的值:若为真,则结果为若为真,则结果为1 1;若为假,则结果为若为假,则结果为0 0。35 35 值为:值为:32 32 值为:值为:设设x=-2;-3x-1 x=-2;-3x-1 值为:值为:设设x=1;2x4 x=

36、1;2x4 值为:值为:例例如如二、关系运算符和关系表达式二、关系运算符和关系表达式求如下关系表达式的值:求如下关系表达式的值:0001算术运算符优先级高于关系运算符算术运算符优先级高于关系运算符3+(43)*4 3+(43)*4 值为:值为:3+43+43*4&|结合性:自左至右;结合性:自左至右;表达式的值:表达式的值:若为真,则结果为若为真,则结果为1 1;若为假,则结果为若为假,则结果为0 0。三、逻辑运算符和逻辑表达式三、逻辑运算符和逻辑表达式 1 1、3 3种逻辑运算符:种逻辑运算符:&|!&|!参与逻辑运算的操作数叫逻辑量。参与逻辑运算的操作数叫逻辑量。逻辑量可以是整型、实型、字

37、符型和指针类型,逻辑量可以是整型、实型、字符型和指针类型,其中,其中,0 0,0.00.0,0,NULL0,NULL代表代表假假,其余逻辑量代表,其余逻辑量代表真真。C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 int a=5;float b=3.5;!a ()!(a b)()a&b ()!a&b()!a&!b ()!(a&b)()a b ()!a|b ()!a|!b ()!(a|b)()(a 0)()(a 0)()例如例如011000110001C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页例如表达式运算如下:例如表达式运

38、算如下:混合优先级:混合优先级:!高高 算术运算符算术运算符 关系运算符关系运算符&和和|赋值运算符赋值运算符 低低 4-04-01&21&28 48 3&2|8 3&2|8 4-!5C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页运算按照从左至右的顺序进行,一旦能够确定逻辑表达式的值,就立即结束运算逻辑运算的短路性质例如设:a=1,b=0,c=-2a&b&c(a+)|+b&-c为为为为 0 0,运算终止,表达式,运算终止,表达式,运算终止,表达式,运算终止,表达式值值值值为为为为 0 0为非为非为非为非0 0,运算终止,表达式值为,运算终止,表达式值为,运算终

39、止,表达式值为,运算终止,表达式值为 1 1且且且且a a为为为为2 2,b b为为为为0 0,c c为为为为-2-2(b,cb,c保持原值保持原值保持原值保持原值)C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页例如:例如:(1)a=0;b=1;(1)a=0;b=1;c=a+&(b=3);c=a+&(b=3);执行后执行后:a:a为为 ,b,b为为 ,c,c为为 。110(2)a=1;b=1;c=0;(2)a=1;b=1;c=0;d=-a d=-a b-b-(c=b+3);(c=b+3);执行后执行后:a:a为为 ,b,b为为 ,c,c为为 ,d,d为为 。0

40、001C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页例如:例如:(1)n(1)n是小于是小于m m的偶数:的偶数:(2)year(2)year是闰年是闰年:(能被(能被4 4整除但不能被整除但不能被100100整除整除,或能被或能被400400整除)整除)逻辑表达式一般用于控制语句中的条件:逻辑表达式一般用于控制语句中的条件:n m&n%2=0n m&n%2=0 year%4=0&year%100!=0|year%400=0C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页例如例如:(1)x=(y=12)/4(1)x=(y=12)

41、/4 (2)x=y=12/4 (2)x=y=12/4 (3)x=(y=12/4)(3)x=(y=12/4)(4)(x=y)=12/4(4)(x=y)=12/4四、赋值运算符和赋值表达式四、赋值运算符和赋值表达式 1 1、赋值运算符赋值运算符 =(执行功能:把执行功能:把=右边的表达式的值,存入右边的表达式的值,存入=左边的左边的变量变量对应的存储空间,即给此变量赋值对应的存储空间,即给此变量赋值)3=2+1 a=a+2)3=2+1 a=a+2 2 2、赋值表达式:赋值表达式:用赋值运算符将变量和表达式连接起来的式子用赋值运算符将变量和表达式连接起来的式子 形式形式:=求值规则求值规则:将将“=

42、”=”右边表达式的值赋给左边的变量。右边表达式的值赋给左边的变量。优先级:优先级:!算术算术 关系关系&|赋值赋值 结合性:自右至左;结合性:自右至左;表达式的值:被赋值变量的值。表达式的值:被赋值变量的值。y y值为值为1212,x x值为值为3 3,表达式的值为,表达式的值为3 3y y值为值为3 3,x x值为值为3 3,表达式的值为,表达式的值为3 3y y值为值为3 3,x x值为值为3 3,表达式的值为,表达式的值为3 3 C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页练习:练习:设设a=12a=12,计算表达式,计算表达式a+=a-=a*12a+

43、=a-=a*12和和a+=a-=a*=12a+=a-=a*=12的值的值 3 3、复合赋值运算符复合赋值运算符 *=、/=/=、%=%=、+=+=、-=,=-=,=,&=,&=、=、=复合运算符是一个运算符复合运算符是一个运算符,但功能上但功能上,是两个运算符功是两个运算符功能的组合。能的组合。例如例如:a+=b :a+=b 相当于相当于 a=a+ba=a+b a*=b a*=b 相当于相当于 a=a*ba=a*b注意:注意:a*=b+c a*=b+c 相当于相当于 a=a*(b+c)a=a*(b+c)而不是而不是 a=a*b+c a=a*b+c 优先级:优先级:与与 =是同一优先级。是同一优

44、先级。结合性:自右至左;结合性:自右至左;表达式的值:被赋值变量的值。表达式的值:被赋值变量的值。-2640C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 求值规则:求值规则:先求解表达式先求解表达式1 1的值的值 若为真若为真(非非0),0),求解表达式求解表达式2 2,并把表达式,并把表达式2 2的值的值 作为整个条件表达式的值作为整个条件表达式的值 若为假若为假(0),(0),求解表达式求解表达式3 3,并把表达式,并把表达式3 3的值作的值作 为整个条件表达式的值为整个条件表达式的值 四、其它运算符四、其它运算符 1 1、条件运算符条件运算符?和和:,

45、它们与三个操作数组组成三元运算。它们与三个操作数组组成三元运算。形式为形式为:?:3 优先级:优先级:逻辑逻辑 条件条件 赋值赋值 结合性:自右至左;结合性:自右至左;C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页2 2、逗号运算符:逗号运算符:,形式形式:表达式表达式1 1,表达式,表达式2 2,表达式,表达式n n 求值规则求值规则:从左至右依次计算各表达式的值从左至右依次计算各表达式的值;优先级:优先级:最低;最低;结合性:自左至右;结合性:自左至右;表达式的值:最后一个表达式的值。表达式的值:最后一个表达式的值。又如:又如:y=x10?x/10:x0?

46、x:-xy=x10?x/10:x0?x:-x 当当x x的值为整型的的值为整型的1515时,表达式的结果为:时,表达式的结果为:当当x x的值为整型的的值为整型的5 5时,表达式的结果为:时,表达式的结果为:15 5例如例如:int max,a=5:int max,a=5,b=3;b=3;max=ab?a:b max=ab?a:b 求求maxmax的值的值 max的值为的值为5C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页例如:例如:a b y a b y 表达式表达式 y=a=4,b=5,a+b;y=a=4,b=5,a+b;y=(a=4,b=5,a+b);y

47、=(a=4,b=5,a+b);y=(a=4,b=5),a+b;y=(a=4,b=5),a+b;y=a=(4,b=5),a+b;y=a=(4,b=5),a+b;4 45 54 49 94 45 59 99 94 45 59 95 55 55 55 51010C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 形式有两种:形式有两种:sizeof 变量名变量名 sizeof(类型名类型名)结果为整型数。结果为整型数。int aint a;float xfloat x;printf(“%d,%d”,sizeof a,sizeof x);printf(“%d,%d”,si

48、zeof a,sizeof x);printf(“%d,%d”,sizeof(int),sizeof(float);printf(“%d,%d”,sizeof(int),sizeof(float);以上两个以上两个printfprintf语句结果均为语句结果均为 。例如例如3 3、求求字节运算符:字节运算符:sizeof 作用:求得变量或某种数据类型所需的字节数。作用:求得变量或某种数据类型所需的字节数。2 2,4 4C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页 C C语言允许整型、实型、字符型数据进行混合运算。语言允许整型、实型、字符型数据进行混合运算。有

49、有3 3种转换方式:自动转换、赋值转换和强制转换。种转换方式:自动转换、赋值转换和强制转换。一、类型自动转换一、类型自动转换 2.4 2.4 数据类型转换数据类型转换 double floatunsigned long long unsigned int int char,short特点:由数值存储位数少特点:由数值存储位数少的向多的转换;整型向实的向多的转换;整型向实型转换!型转换!操作数为相同类型的不转操作数为相同类型的不转换,仍取原类型,特别注换,仍取原类型,特别注意此时可能带来的错误!意此时可能带来的错误!C语言程序设计C语言程序设计C语言程序设计C语言程序设计上一页上一页下一页下一页

50、 int x=2;float y=1.6;char c=A;int x=2;float y=1.6;char c=A;则:则:c +1/x *yc +1/x *y =例如例如char c=68.5;printf(“%c”,c);65(int)+0(int)*1.6(float65(int)+0(int)*1.6(float)65(float)65(float)二、二、赋值转换赋值转换 在赋值时将赋值符右边值的类型转换成与其左边变量类在赋值时将赋值符右边值的类型转换成与其左边变量类型一致的类型。型一致的类型。有下列几种情况:有下列几种情况:(1)(1)实型实型 整型(字符型):去掉小数部分;整型

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档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