C语言程序设计第三章数据类型、运算符与表达式

上传人:桔**** 文档编号:568656573 上传时间:2024-07-25 格式:PPT 页数:52 大小:1.48MB
返回 下载 相关 举报
C语言程序设计第三章数据类型、运算符与表达式_第1页
第1页 / 共52页
C语言程序设计第三章数据类型、运算符与表达式_第2页
第2页 / 共52页
C语言程序设计第三章数据类型、运算符与表达式_第3页
第3页 / 共52页
C语言程序设计第三章数据类型、运算符与表达式_第4页
第4页 / 共52页
C语言程序设计第三章数据类型、运算符与表达式_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《C语言程序设计第三章数据类型、运算符与表达式》由会员分享,可在线阅读,更多相关《C语言程序设计第三章数据类型、运算符与表达式(52页珍藏版)》请在金锄头文库上搜索。

1、主讲教师:李艺主讲教师:李艺C语言程序设计第三章数据类型、运算符与表达式主要内容主要内容3.13.1C C C C语言的数据类型语言的数据类型语言的数据类型语言的数据类型3.23.2 常量与变量常量与变量常量与变量常量与变量3.33.3整型数据整型数据整型数据整型数据3.43.4浮点型数据浮点型数据浮点型数据浮点型数据3.53.5字符型数据字符型数据字符型数据字符型数据3.63.6变量赋初值变量赋初值变量赋初值变量赋初值3.73.7各类数值型数据间的混合运算各类数值型数据间的混合运算各类数值型数据间的混合运算各类数值型数据间的混合运算3.83.8算术运算符和算术表达式算术运算符和算术表达式算术

2、运算符和算术表达式算术运算符和算术表达式3.93.9赋值运算符和赋值表达式赋值运算符和赋值表达式赋值运算符和赋值表达式赋值运算符和赋值表达式3.103.10逗号运算符和逗号表达式逗号运算符和逗号表达式逗号运算符和逗号表达式逗号运算符和逗号表达式3.11 3.11 3.11 3.11 关系运算符关系运算符关系运算符关系运算符3.12 3.12 3.12 3.12 逻辑运算符逻辑运算符逻辑运算符逻辑运算符23.1 数据及数据类型ppC C语言共有语言共有语言共有语言共有1010种数据类型:种数据类型:种数据类型:种数据类型:33.2 常量与变量p常量和符号常量常量和符号常量n整型常量即整数。整型常

3、量即整数。l十进制数:以非十进制数:以非0开始的数。如:开始的数。如:220、-560、+369l八进制数:以八进制数:以0开始的数。如:开始的数。如:06、0106、0677l十六进制数:以十六进制数:以0X或或0x开始的数,如:开始的数,如:0X0D、0XFF、0x4e、0x123等。等。n长整型数:在整型常数后添加一个长整型数:在整型常数后添加一个“L”或或“l”字母字母表示。如:表示。如:22L、0773L、0Xae4l等。等。43.2 常量与变量n浮点型常量即实数浮点型常量即实数l一般形式:由数字、小数点以及必要时的正负号组一般形式:由数字、小数点以及必要时的正负号组成。如:成。如:

4、29.56、-56.33、0.056、.056、0.0等。等。l指数形式:相当于科学计数法,将指数形式:相当于科学计数法,将a10b的数表示的数表示如下:如下:aEb或或aeb其中:其中:a、E(或(或e)、)、b任何一部分都不允许省略。任何一部分都不允许省略。如:如:2.956E3、-0.789e8、.792e-6等。错误表示:等。错误表示:e-6、2.365E。53.2 常量与变量n字符常量:用两个英文单引号限定的一个字符。如:字符常量:用两个英文单引号限定的一个字符。如:a、9、Z、%。n特殊字符常量:转义字符特殊字符常量:转义字符字符形式字符形式功能功能n 换行,将当前位置移到下一行开

5、头t 水平跳格,跳到下一个Tab位置b 退格,将当前位置移到前一列r 回车,将当前位置移到本行开头 反斜杠字符“” 单引号字符 双引号字符ddd 8进制数表示的对应ASCII码字符xhh 16进制数表示的对应ASCII码字符63.2 常量与变量n字符串常量:用英文双引号限定的一个字符序列,这个字符序列字符串常量:用英文双引号限定的一个字符序列,这个字符序列包括的字符个数称为字符串的长度,其长度允许为包括的字符个数称为字符串的长度,其长度允许为0。如:。如:Helloworld长度为长度为11“长度为长度为10.912e8长度为长度为7n定义定义符号常量符号常量的一般格式:的一般格式:#defi

6、ne符号常量名符号常量名常量常量例如:例如:#defineMAX200该命令定义了符号常量该命令定义了符号常量MAX,它表示常数,它表示常数200。73.2 常量与变量n字符串字符串“program”在内存存储的形式如下图所示。在内存存储的形式如下图所示。该字符串占用该字符串占用8个字节的存储空间,但其有效字符的个字节的存储空间,但其有效字符的个数却是个数却是7,最后一个字节存储字符串结束标志,最后一个字节存储字符串结束标志“0”。program/0字符串存储形式83.2 常量与变量p例:已知圆的半径例:已知圆的半径r=16.7,编写程序计算圆的周长和面积。,编写程序计算圆的周长和面积。#de

7、finePI3.14159voidmain()floatr=16.7;floatl,s;l=2*PI*r;s=PI*r*r;printf(L=%fS=%fn,l,s);93.2 常量与变量p常量的本质常量的本质n不占据任何存储空间不占据任何存储空间n属于指令的一部分,编译后不再更改属于指令的一部分,编译后不再更改103.2 常量与变量p变量变量n变量名:用标识符标识变量名。变量名:用标识符标识变量名。n标识符:用来标明变量名、函数名、数组名、结构体名、文件名、标识符:用来标明变量名、函数名、数组名、结构体名、文件名、类型名等的符识。类型名等的符识。n标识符命名规定:标识符由字母(区分大小写)、

8、下划线、数字标识符命名规定:标识符由字母(区分大小写)、下划线、数字三种字符组成,且第一个字符必须是字母或者下划线。见教材三种字符组成,且第一个字符必须是字母或者下划线。见教材P5,表,表1-2,C语言的语言的31个保留字。个保留字。n变量的赋值:变量赋值的一般格式变量的赋值:变量赋值的一般格式变量名变量名=表达式表达式例如:例如:y=x+6.9;必须注意:必须注意:“=”并非指两侧相等,而是包含了计算和赋值两个过程。并非指两侧相等,而是包含了计算和赋值两个过程。首先计算表达式的值;然后将计算的结果保存到首先计算表达式的值;然后将计算的结果保存到“=”左侧的变量中。左侧的变量中。113.3 整

9、型变量p整型变量整型变量n整型变量的分类整型变量的分类l基本型基本型int:占占2个字节,取值范围为个字节,取值范围为 215215 1。l短整型短整型shortint:所占字节和取值范围均与基本型相同所占字节和取值范围均与基本型相同l长整型长整型longintn整型变量,分为有符号型和无符号型。具体有整型变量,分为有符号型和无符号型。具体有6种数据类型:种数据类型:lsignedint:有符号普通整型,简写为有符号普通整型,简写为int,lunsignedint:无符号普通整型:无符号普通整型:取值范围是取值范围是065535lsignedshortint:有符号短整型,简写:有符号短整型,

10、简写shortlunsignedshortint:无符号短整型,简写为:无符号短整型,简写为unsignedshortlsignedlongint:有符号长整型:有符号长整型lunsignedlongint:无符号长整型数,简写为:无符号长整型数,简写为unsignedlong。12变量的数据类型变量的数据类型、字节长度、位数、数据范围字节长度、位数、数据范围符号符号字节字节位数位数数据类型标识符数据类型标识符数据范围数据范围整整型型带带符符号号18char-128127 -2727-1216short int-3276832767 -215215-1316int-3276832767 -21

11、5215-1432long int -231231-1无无符符号号18unsigned char0255 028-1216unsigned short int065535 0216-1316unsigned int065535 0216-1432unsigned long int04294967295 0232-1实实型型带带符符号号432float 10-381038864double10-308103083.3 整型变量133.3 整型变量n整型变量的定义:一般格式:整型变量类型符整型变量的定义:一般格式:整型变量类型符变量变量名表;如:名表;如:inta,b,c;unsignedlong

12、d;n例例2整型变量应用举例。整型变量应用举例。void main() int num1, num2 ,result; num1=-1; num2=4; result =(num1+ num2)*10; printf(“%dn”, result ); 143.4 浮点型数据p浮点型变量(也叫实型变量)浮点型变量(也叫实型变量)n浮点型变量的分类浮点型变量的分类:按照存储数值的精度,浮点型变:按照存储数值的精度,浮点型变量分为单精度浮点型、双精度浮点型和更高精度浮点量分为单精度浮点型、双精度浮点型和更高精度浮点型三类,分别用型三类,分别用float、double和和longdouble说明。说明

13、。通常通常float型用型用4个字节存储,个字节存储,double型用型用8个字节存个字节存储,储,longdouble型用型用16个字节存储。个字节存储。n浮点型变量的定义:一般格式:浮点型变量的定义:一般格式:浮点型变量类型符浮点型变量类型符变量名表;变量名表;如:如:floata,f=12.98;doubleb;153.4 浮点型数据n小数形式小数形式小数形式由数码小数形式由数码09和小数点组成。当某浮点数整和小数点组成。当某浮点数整数部分或小数部分为数部分或小数部分为0时,时,0可以省略,但小数点不可可以省略,但小数点不可省略。省略。n例如:例如:0.0,.25,5.789,0.13,

14、5.0,300., 267.8230, 123.等均为合法的实数。等均为合法的实数。345(无小数点),(无小数点),a7.(数码不可以是字母)等均为(数码不可以是字母)等均为非法的浮点数。非法的浮点数。163.4 浮点型数据n指数形式指数形式指数形式由尾数加阶码标志指数形式由尾数加阶码标志e或或E以及阶码(只能为以及阶码(只能为整数,可以带符号)组成。整数,可以带符号)组成。其一般形式为其一般形式为aEn(a为尾数,为尾数,n为阶码)其值为为阶码)其值为a10nn例如,例如,2.1105可以表示为可以表示为2.1E5,3.710-2可以表示可以表示为为3.7E 2173.4 浮点型数据p例例

15、3浮点型变量的应用。浮点型变量的应用。void main() float r,s; r=2.769; s=3.1416*r*r; printf(“s=%fn”,s); 183.5 字符型变量p字符型变量字符型变量n字符型变量:每个字符型变量只能存储一个字符,占一个字节,字符型变量:每个字符型变量只能存储一个字符,占一个字节,它实际存储的是它实际存储的是8比特的比特的ASCII编码。例如,当一个变量存储字符编码。例如,当一个变量存储字符A时,实际上是存储时,实际上是存储A的的ASCII值值65。n字符型变量分类:分为两类:有符号字符型变量和无符号字符型字符型变量分类:分为两类:有符号字符型变量和

16、无符号字符型变量,分别用变量,分别用signedchar和和unsignedchar说明。通常只用说明。通常只用char来说明字符型变量,它相当于说明符来说明字符型变量,它相当于说明符signedchar,即它将转即它将转换成有符号的整型数,数值范围是换成有符号的整型数,数值范围是-128127,而,而unsignedchar型变量的数值范围是型变量的数值范围是0255。n字符型变量的定义:一般格式:字符型变量的定义:一般格式:字符型变量类型符字符型变量类型符变量名表;变量名表;如如:charch;unsignedcharless;193.5 字符型变量n例例4字符型变量应用举例。字符型变量应

17、用举例。voidmain()charch1=A;/*定义字符型变量定义字符型变量ch1并赋初值并赋初值A*/charch2;/*定义字符型变量定义字符型变量ch2*/ch2=ch1+5;/*用表达式为用表达式为ch2赋值赋值*/printf(“%c,%cn”,ch1,ch2);/*以字符格式输出以字符格式输出ch1、ch2的值的值*/203.5 字符型变量n例例5字符型变量与整数的关系举例。字符型变量与整数的关系举例。voidmain()charch;/*定义字符型变量定义字符型变量*/inti;/*定义整型变量定义整型变量*/ch=A;ch=ch+32;i=ch;/*用字符型变量为整型变量用

18、字符型变量为整型变量i赋值赋值*/printf(%dis%cn,ch,i);printf(%cis%dn,ch,ch); 213.5 字符型变量n例例6有符号字符型变量和无符号字符型变量的比较。有符号字符型变量和无符号字符型变量的比较。voidmain()charc;unsignedchard;/*定义无符号字符型变量定义无符号字符型变量*/c=376;d=376;printf(%d,%dn,c,d); 223.5 字符型变量p其它类型变量其它类型变量n指针变量(第六章);指针变量(第六章);n数组变量(第四章);数组变量(第四章);n结构体变量(第八章);结构体变量(第八章);n联合体变量(

19、第八章);联合体变量(第八章);233.6 变量赋初值p什么是对变量赋初值?什么是对变量赋初值?C C语言允许在定义同时赋初始值。变量赋初值就是在语言允许在定义同时赋初始值。变量赋初值就是在定义变量的同时,给变量赋一个值。这个变量产生后第一定义变量的同时,给变量赋一个值。这个变量产生后第一次被赋值,所以叫次被赋值,所以叫赋初值赋初值。p如何进行赋初值?如何进行赋初值?对变量赋初值只要在定义的时候用赋值运算符赋给该对变量赋初值只要在定义的时候用赋值运算符赋给该变量一个值就行。变量一个值就行。p如:如:inta=3;floatx=5.56;charc1=a;243.6 变量赋初值p在赋初值过程中的

20、问题在赋初值过程中的问题nintx,y,z=3;此此时时只只有有z=3z=3,而而x,yx,y没没有有初初值值,其其初初值值也也不不是是0 0,而而是是一一个个不不确确定定的的值值,这这个个值值在在该该变变量量所所能能表表示示的的数数值值范范围围内内,具具体体是是多多少少我我们们不不知知道道。如如果果此此时时使使用用该该变变量量,系系统统不不会会检检查查、提提示示,而而直直接接使使用用其其中中那那个个不不确确定定的的值值,会会出出错的。错的。如:如:inta,b,c=5; 相当于如下两个语句:相当于如下两个语句: inta,b,c;c=5;253.6 变量赋初值ninta=b=c=3;这这种种

21、写写法法是是不不正正确确的的。不不能能表表示示a a、b b、c c的初值都是的初值都是3 3。可写成可写成: :inta=3,b=3,c=3;或者写成:或者写成:inta,b,c;a=b=c=3;注意:初始化不是在编译阶段完成的,而是在运行时注意:初始化不是在编译阶段完成的,而是在运行时赋予初值的。赋予初值的。263.6 变量赋初值p变量数据的存储与读取变量数据的存储与读取变量所代表的数据是存储在(计算机)内存中。在使变量所代表的数据是存储在(计算机)内存中。在使用中往往希望数据的存储应灵活、多样,以便于编程。用中往往希望数据的存储应灵活、多样,以便于编程。n变量数据的存储:变量数据的存储:

22、变量数据的存储形式有:变量数据的存储形式有:l静态存储静态存储static静态型静态型extern外部型外部型l动态存储动态存储auto自动型自动型register寄存器型寄存器型这部分的内容在第五章函数中详细介绍。这部分的内容在第五章函数中详细介绍。273.6 变量赋初值p变量数据的读取变量数据的读取n直接读取:变量名实际代表一个确直接读取:变量名实际代表一个确定的存储单元。程序编译完成后,定的存储单元。程序编译完成后,变量就与数据存储单元一一对应。变量就与数据存储单元一一对应。对变量读取操作,就是到对应的存对变量读取操作,就是到对应的存储单元中读取数据。储单元中读取数据。n间接读取:间接读

23、取:(指针)变量中存放的(指针)变量中存放的是数据内存的地址,在这种情况下,是数据内存的地址,在这种情况下,首先拿存放数据的地址,然后,再首先拿存放数据的地址,然后,再到对应的地址中读取数据。到对应的地址中读取数据。变量变量 内存内存ab变量变量 地址地址 内内 存存 a 2000 b 2002283.7 各类数值型数据间的混合运算p为什么各类型的数据可以进行混合运算为什么各类型的数据可以进行混合运算字字符符型型数数据据在在内内存存中中是是按按数数值值方方式式存存放放的的。而而整整型型数数据据和和实实型型数数据据肯肯定定也也是是按按数数值值方方式式存存放放的的。在在这这种种前前提提下下,这这三

24、三种种类类型型的的数数据据实实际际上上是是可可以以进进行行混混合合运运算算的的。但但是是应应该有一个运算原则。该有一个运算原则。p如何在各类型的数据之间进行混合运算如何在各类型的数据之间进行混合运算n首先转换成同一类型,然后运算。首先转换成同一类型,然后运算。n转换规则是低级别的数据向高级别数据转换。转换规则是低级别的数据向高级别数据转换。293.7 各类数值型数据间的混合运算303.7 各类数值型数据间的混合运算p例如:计算:例如:计算:3+1+0.1/3-5.3/3L解:转换解:转换3+31(字符字符3 3的的ASCIIASCII值值) )+0.1+0.1(d)(d)/3.0/3.0(d)

25、(d)-5.3-5.3(d)(d)/3.0/3.0(d)(d)p所有的类型转换过程由系统所有的类型转换过程由系统自动进行自动进行。313.8 算术运算符和算术表达式p算术运算符算术运算符C语言提供了语言提供了5个基本的算术运算符:个基本的算术运算符:n 加法运算符加法运算符n- 减法运算符,负号运算符减法运算符,负号运算符n*乘法运算符乘法运算符n/ 除法运算符除法运算符n%取余运算符或称模运算符取余运算符或称模运算符运算符运算符 , 的优先级相同,的优先级相同,*,/,%的优先级相同,的优先级相同,*,/,%的优先级高于的优先级高于 和和 运算符,算术运算符都是左结运算符,算术运算符都是左结

26、合的运算符。合的运算符。323.8 算术运算符和算术表达式n注意:注意:1.1.使使用用“/ /”时时注注意意:如如果果运运算算符符两两边边的的数数据据为为整整型型,那那么么得得到到的的结结果果也也必必是是整整型型,5/2=25/2=2,1/5=01/5=0,而不是,而不是0.20.2,1.0/5=0.21.0/5=0.2。2.2.如如果果其其中中一一数数是是负负数数,舍舍入入的的值值不不固固定定,得得到到的的值值也也不不固固定定。如如:-5/3-5/3可可以以得得到到-1-1和和-2-2两两值值,TC2.0TC2.0采取采取“向零取整向零取整”法得到法得到-1-1。3.3.使使用用“% %”

27、时时注注意意:该该运运算算符符的的两两边边只只能能是是整整型型数数据据。且且得得到到的的结结果果也也只只可可能能落落在在从从0 0到到% %右右边的数减边的数减1 1这个范围内。如:这个范围内。如:7%47%4的数值为的数值为3 3。333.8 算术运算符和算术表达式n算术表达式定义算术表达式定义用用算算术术运运算算符符号号和和括括号号将将运运算算对对象象(也也称称操操作作数数)连连接接起起来来的的、符符合合C C语语法法规规则则的的式式子子,称称为为算算术术表表达达式式。其其中中:运运算算对对象象包包括括常常量量、变量、函数等。变量、函数等。n例如:例如:3+4.5*a-b*4/33+4.5

28、*a-b*4/3 a*b/c-1.5+ a*b/c-1.5+a a343.8 算术运算符和算术表达式n优先级优先级C C语语言言规规定定,对对表表达达式式求求值值时时,按按运运算算符符的的优优先先级级别别高高低低,从从高高到到低低进进行行运运算算。另另外外,C C语语言言中中还还规规定定了了运运算算符符的的结结合合性性,算算术术运运算算符符的的结结合合方方向向是是“从从左左至至右右”。不不是是所所有有的的运运算算符符的的结结合合性性都都是是从从左左至至右右有有,有有的的是是从从右至左的,称右结合性。右至左的,称右结合性。n在书中附录在书中附录3 3中中P365P365中表明。中表明。35n强制

29、类型转换运算符强制类型转换运算符 可可以以利利用用强强制制类类型型转转换换运运算算符符将将一一个个表表达达式式转转换换成所需类型。例如:成所需类型。例如: (float)x(int)x+y(int)(x+y)(float)(5%3)其格式为:其格式为: (类型)(表达式)(类型)(表达式)3.8 算术运算符和算术表达式363.8 算术运算符和算术表达式n注注意意:在在强强制制类类型型转转换换时时,要要产产生生的的是是上上个个临临时时数数据据,这这个个临临时时数数据据的的类类型型是是指指定定的的类类型型,而而原原始数据的类型不会发生改变。始数据的类型不会发生改变。 main()floatx;in

30、ty;x=3.6;y=(int)x;printf(“%f,%d”,x,y);运行结果为:运行结果为:3.600000 , 33.600000 , 337n在在C C语言中有两种形式的类型转换:语言中有两种形式的类型转换:l一一种种是是系系统统自自动动进进行行的的类类型型转转换换,如如5*0.65*0.6;l另一种是强制类型转换,象另一种是强制类型转换,象(int)x%8(int)x%8。在在上上面面这这个个例例子子中中% %运运算算符符要要求求两两个个运运算算数数都都为为整整型型,如如果果有有一一个个运运算算数数不不是是整整型型,那那么么系系统统将将报报错错。这这种种情情况况下下,如如果果变变

31、量量x x不不是是整整型型,那那么么必必须须使使用用强强制制类类型型转换。转换。3.8 算术运算符和算术表达式38p自增、自减运算符(自增、自减运算符(+、-)n+是是自自增增运运算算符符。+k k或或k k+都都是是让让变变量量k k的的值值加加1。n-是自减运算符。是自减运算符。-k k或或k-都是让变量都是让变量k k的值减的值减1。n+K含义:先执行含义:先执行K=K+1,再使用再使用K值。值。nK+含义:先使用含义:先使用K值后值后,再执行再执行K=K+1。3.8 算术运算符和算术表达式39p例如:例如: k=1; k=1;k=1; k=1; j=+k; j=k+;j=+k; j=k

32、+;左边左边k k先变成先变成2 2,j=2 j=2 右边右边k k为为1 1,j=1j=1然后然后K K为为2 2。p总之,自增、自减运算符都有两种用法:总之,自增、自减运算符都有两种用法:n前前置置运运算算:运运算算符符放放在在变变量量之之前前,如如:+变变量量、-变变量量先先使使变变量量的的值值增增(或或减减),然然后后再再以以变变化化后后的值参与其它运算,即的值参与其它运算,即先增减、后运算先增减、后运算。n后后置置运运算算:运运算算符符放放在在变变量量之之后后。如如:如如变变量量+、变变量量-变变量量先先参参与与其其它它运运算算,然然后后再再使使变变量量的的值值增增(或减),即(或减

33、),即先运算、后增减先运算、后增减。3.8 算术运算符和算术表达式40p自增、自减运算符使用中的问题说明自增、自减运算符使用中的问题说明n这这两两种种运运算算符符只只能能用用于于变变量量,而而不不能能用用于于常常量量或或表达式。表达式。n+、-运运算算符符的的优优先先相相同同,比比算算术术运运算算符符优优先先级级要高。其结合性是要高。其结合性是“从右至左从右至左”的。的。-i+ 相当于相当于-(i+)。例:例:i=3;=3;j=-i+;j=+(+);printf(“%d”,j);结果是:结果是:-3 printf(“%d”,j);结果是:结果是:43.8 算术运算符和算术表达式41p要避免发生

34、歧义性要避免发生歧义性 main()intx=6,y;printf(x=%dn,x);/*输出输出x的初值的初值*/y=+x; /*前置运算前置运算*/printf(y=+x:x=%d,y=%dn,x,y);y=x-;/*后置运算后置运算*/printf(y=x-:x=%d,y=%dn,x,y);运行结果:运行结果:x=6y=+x:x=7,y=7y=x-:x=6,y=73.8 算术运算符和算术表达式42p注意程序的写法注意程序的写法i=3;printf(“%d,%d”,+);结果为:结果为:3,3 (有的系统左至右)(有的系统左至右) 4,3 (多数系统右至左)(多数系统右至左) 最好写成:最

35、好写成: =3;j=+;printf(“%d,%d”,j,);p结果为:结果为:3,4 3.8 算术运算符和算术表达式43如果的初值为如果的初值为(i+)+(i+)+(i+)有的系统:有的系统:3+4+5=12有的系统:有的系统:3+3+3=9为了避免歧义性写成:为了避免歧义性写成:i=3;a=i+;b=i+;c=i+;d=a+b+c; 任何系统结果都一样。任何系统结果都一样。3.8 算术运算符和算术表达式443.9 赋值运算符和赋值表达式p赋值运算符赋值运算符n“= =”就是赋值运算符。就是赋值运算符。n格式:变量格式:变量= =表达式表达式n赋值过程中遇到的问题:赋值过程中遇到的问题:n如

36、果赋值运算符两侧的变量和表达式的类型都为数值型时,系统如果赋值运算符两侧的变量和表达式的类型都为数值型时,系统自动进行类型转换。怎么转换呢?有一个原则,要尽量保持赋值自动进行类型转换。怎么转换呢?有一个原则,要尽量保持赋值前后数据的一致性。前后数据的一致性。p类型转换类型转换n将实数赋给整数时舍去小数点。将实数赋给整数时舍去小数点。n将整数赋给实数时后面加将整数赋给实数时后面加0 0。n字符型赋给整数时将字符的字符型赋给整数时将字符的8 8位,放在整数的低位,放在整数的低8 8位,高位,高8 8位补零。位补零。n将将intint , , short short , , long long 型型

37、数数据据赋赋给给 char char 型型变变量量时时,只只将将其其低低8 8位原封不动地送到位原封不动地送到 char char 中中453.9 赋值运算符和赋值表达式下列表达式是合乎下列表达式是合乎C语言表达式规则的表达式:语言表达式规则的表达式:a=123a=123.456c=a+Ax=a+ca+(x=a+4)/c/*算术表达式算术表达式*/(x=a)+(b=3)/*合法的算术表达式合法的算术表达式*/463.9 赋值运算符和赋值表达式p复合的赋值运算符和复合的赋值表达式复合的赋值运算符和复合的赋值表达式在赋值运算符在赋值运算符“ ”前加上其他的运算符,可以构成前加上其他的运算符,可以构

38、成复合的赋值运算符。如在复合的赋值运算符。如在“ ”前加上前加上“ ”运算符就构运算符就构成了成了“”运算符。运算符。C语言提供了语言提供了10种复合的赋值运算符,它们是种复合的赋值运算符,它们是+=、-=、*=、=、%=、=、&=、=、|=其中前其中前5个是复合的算术赋值运算符,后个是复合的算术赋值运算符,后5个是复合的个是复合的位运算赋值运算符。复合的赋值运算符是双目运算符,优位运算赋值运算符。复合的赋值运算符是双目运算符,优先级和赋值运算符相同,也是右结合性的。先级和赋值运算符相同,也是右结合性的。473.9 赋值运算符和赋值表达式由复合的赋值运算符构成的赋值表达式的格式为:由复合的赋值

39、运算符构成的赋值表达式的格式为:变量变量确定的值确定的值它等效于它等效于变量变量=变量变量确定的值确定的值例如:例如:a+=5等价于等价于a=a+5x*=y+7等价于等价于x=x*(y+7)r%=p等价于等价于r=r%p483.10 逗号运算符和逗号表达式在语言中逗号在语言中逗号“,”也是一种运算符,称为逗号运也是一种运算符,称为逗号运算符。算符。逗号运算符的优先级是最低的。其功能是把两个逗号运算符的优先级是最低的。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。表达式连接起来组成一个表达式,称为逗号表达式。逗号表达式的一般形式为:逗号表达式的一般形式为:表达式表达式1,表达式,表

40、达式2逗号表达式的求值过程是顺序求解表达式逗号表达式的求值过程是顺序求解表达式1、表达式、表达式2的值,并以表达式的值,并以表达式2的值作为整个逗号表达式的值。的值作为整个逗号表达式的值。493.10 逗号运算符和逗号表达式p例例2.7main()inta=2,b=4,c=6,x,y;y=(x=a+b),(b+c);printf(y=%d,x=%d,y,x);程序运行结果为:程序运行结果为:y=6,x=6本例中的本例中的y等于等于6,而逗号表达式的值,而逗号表达式的值y (x a b),(b c)是是10。503.12 逻辑运算符p逻辑运算符逻辑运算符n逻辑运算是对真和假两类种状态的运算。逻辑

41、运算是对真和假两类种状态的运算。n逻辑运算把一切逻辑运算把一切“非非0”的数作为真的数作为真(用用1表示表示),把,把“0”数作为假数作为假(用用0表示表示)。p逻辑运算类别逻辑运算类别n非非!:单目运算符单目运算符n与与&:双目运算符:双目运算符n或或|:双目运算符双目运算符513.12 逻辑运算符p逻辑运算真值表逻辑运算真值表!取值取值结果结果非非 0 (真真 )0 (假假 )0 (假假 )非非0(真真)&AB结果结果0假假非非0(真真)0假假非非0(真真)0假假0假假0假假0假假0假假非非0(真真)非非0(真真)非非0(真真)有假则假,全真则真。有假则假,全真则真。|AB结结果果0 假假非非0(真真)非非0(真真)非非0(真真)0 假假非非0(真真)0 假假0 假假0 假假非非0(真真)非非0(真真)非非0(真真)有真则真,全假则假。有真则真,全假则假。52

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 幼儿教育

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