C语言基本数据类型、运算符及表达式_第1页
C语言基本数据类型、运算符及表达式_第2页
C语言基本数据类型、运算符及表达式_第3页
C语言基本数据类型、运算符及表达式_第4页
C语言基本数据类型、运算符及表达式_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第2章章 基本数据类型、运算符及表达式基本数据类型、运算符及表达式2.1 C的基本数据类型的基本数据类型数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型 void数值类型数值类型字符类型字符类型 char枚举类型枚举类型 enum整整 型型浮点型浮点型单精度型单精度型 float双精度型双精度型 double短整型短整型 short长整型长整型 long整型整型 int数组类型数组类型结构体类型结构体类型 struct共用体类型共用体类型 union2.2 常量与变量常量与变量常量常量程序运行的过程中,值不能被改变的量。程序运行的过程中,值不能被改变的量。含义:含

2、义:分类:分类:字面常量和符号常量。字面常量和符号常量。其中,字面常量又分为:其中,字面常量又分为:整型常量、实型常量、整型常量、实型常量、字符型常量(字符常量和字符串常量)字符型常量(字符常量和字符串常量)字面常量字面常量 整型常量整型常量形式:形式:(1 1)十进制整型常量:)十进制整型常量: 由由0 0至至9 9的数字组成,没有前缀,不能以的数字组成,没有前缀,不能以0 0起头。起头。(2 2)八进制整型常量:)八进制整型常量: 以以0 0(数字(数字0 0)为前缀,其后由)为前缀,其后由0 0到到7 7的数字组成,的数字组成, 没有小数部分。没有小数部分。 (3 3)十六进制整型常量:

3、)十六进制整型常量: 以以0 0 x x或或0 0X X为前缀,其后由为前缀,其后由0 0到到9 9的数字和的数字和A A到到F F (大小写均可)字母组成,没有小数部分大小写均可)字母组成,没有小数部分整型常量中的长整型数据可用整型常量中的长整型数据可用L L(或小写字母或小写字母l l)作后缀表示。作后缀表示。十进制十进制、八进制八进制和和十六进制十六进制3 3种形式种形式字面常量字面常量 实型常量实型常量构成:构成: 由整数部分和小数部分组成的,只有由整数部分和小数部分组成的,只有十进制十进制方式方式。形式:形式:(1)定点数形式定点数形式:它由数字和小数点组成。整数和小数部分可以省它由

4、数字和小数点组成。整数和小数部分可以省去一个,但不可两者都省,而且小数点不能省。去一个,但不可两者都省,而且小数点不能省。如:如:1.234,.123,123.,0.0等。等。(2)指数形式指数形式(或称科学表示法或称科学表示法):它是用整数或定点数后加它是用整数或定点数后加e(或或E)和指数来表示和指数来表示; 指数可正可负必须为整数指数可正可负必须为整数, 字母字母e之前必须有数字。之前必须有数字。如如: 1.234e3, 12.34e2 均合法表示均合法表示 1.234* *103;而而 e3,1e2.3,.e3,e 均不合法。均不合法。实型常量的后缀用实型常量的后缀用F/f 表示表示单

5、精度型单精度型。用。用L/l表示表示长双精度型长双精度型。例:例:下列四个选项中,均是合法的实型常量的是下列四个选项中,均是合法的实型常量的是 A、+2e-1 -3e4.5 5e3 B、-.91 .2e-0 -7.e8 C、123e+1 4567 +2e-1 D、8e-4 -5e+2 -e3B字面常量字面常量 字符型常量字符型常量分类分类:字符常量和字符串常量两类。字符常量和字符串常量两类。1. 1. 字符常量:字符常量:用一对用一对单引号单引号括起来的一个字符。括起来的一个字符。如:如:aa、AA、33、?等。等。特殊的特殊的转义字符常量转义字符常量:是将反斜扛是将反斜扛( )后面的字符转换

6、成另外的意思。后面的字符转换成另外的意思。 = = = = != = (3) (3) 逻辑运算符逻辑运算符 ! & | ! & | (4) (4) 位运算符位运算符 & & (5) (5) 赋值运算符赋值运算符 = = 复合赋值运算符复合赋值运算符 (6) (6) 条件运算符条件运算符 ? : ? : (7) (7) 逗号运算符逗号运算符 , (8) (8) 指针运算符指针运算符 * * 和和 & & (9) (9) 求字节数运算符求字节数运算符 sizeofsizeof (10) (10)强制类型转换运算符强制类型转换运算符 (类型标识符)(类型标识符) (11) (11)分量运算符分量运算

7、符 (12) (12)下标运算符下标运算符 (13) (13)其它其它 函数名函数名( )( )2. 2. 运算符按其连接运算对象的个数可分为:运算符按其连接运算对象的个数可分为:(1 1)单目运算符(仅对一个运算对象进行操作)单目运算符(仅对一个运算对象进行操作) ! + - - + - -(取负号)(取负号) (类型标识符)(类型标识符) * * & & sizeofsizeof(2 2)双目运算符(该运算符连接两个运算对象)双目运算符(该运算符连接两个运算对象) + - + - * * / % = = != / % = = != & | & | & | & | = = 复合赋值运算符复合

8、赋值运算符(3 3)三目运算符(该运算符连接三个运算对象)三目运算符(该运算符连接三个运算对象) ? :(4 4)其它)其它 ( ) ( ) - -3. 3. 按优先级及结合性按优先级及结合性优先级:优先级:标志运算符在表达式中的运算顺序。标志运算符在表达式中的运算顺序。结合性:结合性:优先级相同时,按优先级相同时,按从左到右从左到右或或从右到左从右到左的的结合顺序确定运算符的计算顺序。结合顺序确定运算符的计算顺序。分为二类:分为二类:(1 1)从右到左:从右到左:单目、三目和赋值运算符单目、三目和赋值运算符(2 2)从左到右:从左到右:其它运算符其它运算符算术运算符与算术表达式算术运算符与算

9、术表达式1. 1. 算术运算符算术运算符单目运算符:单目运算符:- -( (取负取负) )、+ +( (取正取正) )双目算术运算符:双目算术运算符:+ +( (加加) )、- -( (减减) )、* *( (乘乘) )、/ /( (除除) )、% %( (余数余数) )说明:说明:1、整数相除结果为整数,即只取商的整数部分;、整数相除结果为整数,即只取商的整数部分;2、%只适合整数运算只适合整数运算自增与自减运算符(自增与自减运算符( + + 与与 - - )说明:说明:单目运算符,操作对象只有一个且只能是单个变量。单目运算符,操作对象只有一个且只能是单个变量。功能:功能:(1 1)取由该运

10、算符构成的表达式的值)取由该运算符构成的表达式的值(2 2)实现变量)实现变量( (即运算对象即运算对象) )自身的加自身的加1 1或减或减1 1运算。运算。方式:方式:前缀方式:前缀方式:运算符在变量的前面运算符在变量的前面, ,如如+a a或或- - -a a 先自增先自增/ /自减,再引用;自减,再引用;后缀方式:后缀方式:运算符在变量的后面运算符在变量的后面, ,如如a+ a+ 或或a- -a- - 先引用,再自增先引用,再自增/ /自减。自减。例:例:main() int a=3; int b=+a,c; printf(%d,%dn,a,b); c=a+; printf(%d,%dn

11、,a,c); 4 ,4 5 ,4#include main( ) char c1=A,c2,c3; int i=5,j,k; c2=c1+; c3=+c1; j=i-; k=-i; printf(c1=%c,c2=%c,c3=%cn,c1,c2,c3); printf(i=%d,j=%d,k=%dn,i,j,k);c1=C, c2=A, c3=Cc1=C, c2=A, c3=Ci=3, j=5, k=3 i=3, j=5, k=3 例:例:说明:说明:1.+ 和和 - 的运算对象只能是变量(或运的运算对象只能是变量(或运算结果是变量的表达式)算结果是变量的表达式), 不能是常量或不能是常量或运

12、算结果是数值的表达式运算结果是数值的表达式。 例如:例如: 5+、(a+2)+ 不合法。不合法。 2.具有具有右结合性右结合性,结合方向为从右到左。,结合方向为从右到左。 例如:例如: a+ 等价于等价于 -(a+) 3.在有在有+ 和和 的表达式中,尽量不要使的表达式中,尽量不要使用难于理解和容易出错的表达方式,尤其用难于理解和容易出错的表达方式,尤其是具有二义性的表达式。是具有二义性的表达式。int i=3; m=(i+)+(i+)+(i+);int i=3; a=i+; b=i+c=i+;c=a+b+c;()2 2、算术表达式、算术表达式用算术运算符将运算对象连接起来,符合用算术运算符将

13、运算对象连接起来,符合语法规则,并能说明运算过程的式子。语法规则,并能说明运算过程的式子。赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符:赋值运算符: = =一般形式:一般形式: 变量变量 = = 表达式表达式含义:含义:将赋值号将赋值号右边表达式右边表达式的值的值赋给赋给左边的变量左边的变量。如如: x=3; y=(x+2)x=3; y=(x+2)* *3;3;注意:注意:(1)(1)先计算赋值运算符右侧表达式先计算赋值运算符右侧表达式, ,再赋值。再赋值。(2)(2)赋值运算符的左侧必须是一个变量。赋值运算符的左侧必须是一个变量。如: 3 3= =x; x; (x+y)(x+y)=

14、 5;= 5; /* 都错误 */复合赋值运算符复合赋值运算符一般形式:一般形式:变量变量 = = 变量变量 运算符运算符 表达式表达式 ; ;缩写式:缩写式:变量变量 运算符运算符 = = 表达式表达式; ; 如如: :x = x + y;x = x + y;x += y;x += y;x = x x = x * * (y + z); (y + z);x x * *= y + z;= y + z; 复合赋值运算符共有复合赋值运算符共有1010种:种: += +=(加赋值)(加赋值) -= -=(减赋值)(减赋值) * *= =(乘赋值)(乘赋值) /= /=(除赋值)(除赋值) %= %=(

15、求余赋值)(求余赋值) &= &=(位与赋值)(位与赋值) |= |=(按位或赋值)(按位或赋值) = =(按位异或赋值)(按位异或赋值) = = =(右移位赋值)(右移位赋值)例:例: # include main( ) int a; float b; a*=a/=(a=7)-(b=4.5); printf(a=%d, b=%fn,a, b);a=4,b=4.500000例例: int m=7,n=12; 则能得到值为则能得到值为3的表达式是的表达式是_ A. n%=(m%=5) B. n%=(m-m%5) C. n%=m-m%5 D. (n%=m)-(m%=5) D逗号运算符和逗号表达式逗

16、号运算符和逗号表达式一般形式一般形式:表达式表达式1,表达式表达式2,表达式表达式n例例:z=(y=(x=4*5,x*5),x+25) x=20, y=100, z=45综合例题综合例题:int k=7;float a=2.5,b=4.7;则表达式则表达式 a+k%3*(int)(a+b)%2/4的值的值_A. 2.5 B. 2.75 C. 3.5 D. 0.0 A各类数值型数据间的混合运算与类型转换各类数值型数据间的混合运算与类型转换语言规定:语言规定:相同类型相同类型数据直接进行运算数据直接进行运算, ,运算结果是原数据类型运算结果是原数据类型;不同类型不同类型的数据的数据先转换成同一类型

17、先转换成同一类型,然后才可进行运算然后才可进行运算。两种转换形式:两种转换形式:(1)(1)隐含转换隐含转换( (隐式转换隐式转换) );(2)(2)强制转换强制转换( (显式转换)显式转换)隐含转换隐含转换1 1、运算转换运算转换不同类型数据混合运算时不同类型数据混合运算时2 2、赋值转换赋值转换把一个值赋给与其类型不同的变量时把一个值赋给与其类型不同的变量时3 3、输出转换输出转换输出时转换成指定的输出格式输出时转换成指定的输出格式4 4、函数调用转换函数调用转换实参与形参类型不一致时转换实参与形参类型不一致时转换由语言系统自动完成的由语言系统自动完成的doublefloatlonguns

18、ignedintchar,short低低高高转换规则:转换规则:注意:注意:(1) (1) 转换按箭头方向不是逐步进行转换按箭头方向不是逐步进行, , 而是一步到位。而是一步到位。(2) (2) 类型转换只影响表达式结果类型转换只影响表达式结果, ,不改变原变量的类型。不改变原变量的类型。例例 char ch; int i; float f; double d;ch / i + f * * d - ( f + i )intdoubledoubledoubledouble例例:以下表达式结果为整数的是以下表达式结果为整数的是_ (设设int i;char c;float f;) A. i+f B. i*c C. c+f D. i+c+fB 强制转换强制转换通过强制类型转换

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论