第2章数据及其运算_第1页
第2章数据及其运算_第2页
第2章数据及其运算_第3页
第2章数据及其运算_第4页
第2章数据及其运算_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、n2.1 数据及数据类型数据及数据类型n2.2 常量常量n2.3 变量变量n2.4 常用运算常用运算n2.5 表达式中数据类型的自动转换表达式中数据类型的自动转换n2.6 用用typedef命名数据类型命名数据类型 基本类型整型字符型实型(浮点型)枚举型构造类型指针类型空类型数组类型结构体类型共用体类型数据类型单精度型双精度型n2.2.1 整型常量整型常量n2.2.2 实型常量实型常量n2.2.3 字符常量字符常量n2.2.4 字符串常量字符串常量n2.2.5 符号常量符号常量n整型常量即整数。整型常量即整数。u十进制数:以非十进制数:以非0开始的数开始的数如:如:220、-560、+369u

2、八进制数:以八进制数:以0开始的数开始的数如:如:06、0106、0677u十六进制数:以十六进制数:以0X或或0 x开始的数开始的数如:如:0X0D、0XFF、0 x4e、0 x123等。等。 n在整型常数后添加一个在整型常数后添加一个“L”或或“l”字母,表示该数为长字母,表示该数为长整型数整型数。 如:如:22L、0773L、0Xae4l等。等。n实型常量即实数实型常量即实数u一般形式一般形式 由数字、小数点以及必要时的正负号组成由数字、小数点以及必要时的正负号组成 如:如:29.56、-56.33、0.056、.056、0.0等。等。u2指数形式指数形式 相当于科学计数法,将相当于科学

3、计数法,将a10b的数表示如下:的数表示如下: aEb 或或 aeb 其中:其中:a、E(或(或e)、)、b任何一部分都不允许省略。任何一部分都不允许省略。 如:如:2.956E3、-0.789e8、.792e-6等。等。 错误表示:错误表示:e-6、2.365E。n字符常量字符常量:用两个英文单引号限定的一个字符。如:用两个英文单引号限定的一个字符。如:a 、9 、 Z 、%。n特殊字符常量特殊字符常量:转义字符:转义字符 字符形式字符形式 功能功能 t 水平跳格,跳到下一个水平跳格,跳到下一个Tab位置位置 b 退格,将当前位置移到前一列退格,将当前位置移到前一列 r 回车,将当前位置移到

4、本行开头回车,将当前位置移到本行开头 反斜杠字符反斜杠字符“” 单引号字符单引号字符 双引号字符双引号字符 ddd 8进制数表示的对应进制数表示的对应ASCII码字符码字符 xhh 16进制数表示的对应进制数表示的对应ASCII码字符码字符 用英文双引号限定的一个字符序列,这个字用英文双引号限定的一个字符序列,这个字符序列包括的字符个数称为字符串的长度,符序列包括的字符个数称为字符串的长度,其长度允许为其长度允许为0。如:。如: Hello world 长度为长度为11 “ ” 长度为长度为1 0.912e8 长度为长度为7n定义符号常量的一般格式定义符号常量的一般格式:#define 符号常

5、量名符号常量名 常量常量例如:例如: #define MAX 200该命令定义了符号常量该命令定义了符号常量MAX,它表示常数,它表示常数200。Pro2-2.3.1 简单变量的分类简单变量的分类n2.3.2 简单变量的定义简单变量的定义n2.3.3 简单变量的赋值简单变量的赋值变量分类类型标识符类型名称存储空间完整形式简化形式整型变量signed intint有符号基本整型2个字节signed short intshort有符号短整型signed long intlong有符号长整型4个字节unsigned int unsigned int无符号基本整型unsigned short intu

6、nsigned short无符号短整型unsigned long intunsigned long无符号长整型实型变量floatfloat单精度实型4个字节doubledouble双精度实型8个字节字符型变量charchar字符型1个字节变量定义说明int a;定义变量a,存储int型数据float x,y;定义变量x、y,存储float 型数据char ch1,ch2,ch3;定义变量ch1、ch2、ch3,存储char 型数据long m;定义变量m,存储long int 型数据double x1,x2; 定义变量x1、x2,存储double 型数据 变量名=表达式 (1)定义变量的同时为

7、变量赋初值 (2)先定义变量,然后再为变量赋值 n2.4.1 算术运算算术运算n2.4.2 关系运算关系运算n2.4.3 逻辑运算逻辑运算n2.4.4 自增、自减运算自增、自减运算n2.4.5 赋值运算赋值运算n2.4.6 条件运算条件运算n2.4.7 逗号运算逗号运算u不同运算符在表达式中的运算顺序。不同运算符在表达式中的运算顺序。u 在表达式中,当一个运算量的两侧有两个相同优先级在表达式中,当一个运算量的两侧有两个相同优先级别的运算符时,该运算量先和那个运算符进行结合运算别的运算符时,该运算量先和那个运算符进行结合运算的问题。的问题。u有两个结合方向:有两个结合方向:l 1算术运算符算术运

8、算符u加法运算符加法运算符 +u减法运算符减法运算符 -u乘法运算符乘法运算符 *u除法运算符除法运算符 /u求余运算符求余运算符 %u负数运算符负数运算符 -2算术表达式算术表达式由算术运算符和运算对象构成的表达式称为算术表达式。由算术运算符和运算对象构成的表达式称为算术表达式。 126 -a*(x+y-0.96) (a+b)/c+sin(x):sin()为函数,为函数, sqrt(b*b-4*a*c) 3算术运算符的属性算术运算符的属性n负号运算符(负号运算符(-)最高;其次是乘法()最高;其次是乘法(*)、)、除法(除法(/);求余();求余(%)运算,最后是加法)运算,最后是加法(+)

9、、减法()、减法(-)运算。)运算。n说明:n两整数相除,结果为整数,舍小数部分;否则为double型n%要求两侧均为整型数据n例例 5/2 =-5/2.0 =5%2 =-5%2 =1%10 =5%1 =5.5%2 =1 1关系运算符关系运算符n关系运算是对两个运算对象之间的大小进行比较的关系运算是对两个运算对象之间的大小进行比较的运算。运算。u大于大于 u大于等于大于等于=u小于小于 u小于等于小于等于=c+d a+bc+d x=y x=y (x-3)(y+1)(y+1) 、=、 、=3的值是的值是1。 设整数为设整数为n,若,若n%2的值为的值为0,则,则n为偶数。由此可为偶数。由此可写出

10、判断偶数的关系表达式,如下:写出判断偶数的关系表达式,如下: n%2=0 当该表达式的值为当该表达式的值为1时,时,n为偶数;否则,为偶数;否则,n为奇数。为奇数。例例 若若a=0; b=0.5; x=0.3;a=0; b=0.5; x=0.3; 则则 a=x=ba=x2785278在在C C中是允许的,中是允许的, 值为值为0 0例例 int i=1, j=7,a; int i=1, j=7,a; a=i+(j%4!=0); a=i+(j%4!=0); 则则 a=a=2 2例:字符数据的比较按其例:字符数据的比较按其ASCIIASCII码进行码进行 a0 a0 结果为结果为 A100 A10

11、0 结果为结果为1 10 0例例 注意区分注意区分“= =”与与“=”=” int a=0,b=1; int a=0,b=1; if(a if(a= =b) b) printf(“a equal to b”); printf(“a equal to b”); else else printf(“a not equal to printf(“a not equal to b”);b”);例例 应避免对应避免对浮点数浮点数作相等或不等的判断作相等或不等的判断原因:判定两个浮点数是否相等时,由于计算机存原因:判定两个浮点数是否相等时,由于计算机存储上出现的误差,会出现错误的结果储上出现的误差,会出现

12、错误的结果如:如: 1.0/3.01.0/3.0* *3.0=1.0 3.0=1.0 可改写为:可改写为:fabs(1.0/3.0fabs(1.0/3.0* *3.0-1.0)1e-63.0-1.0)b&acab&ac 数学不等式数学不等式(x+6)y(x-3)(x+6)y(x-3) 对应的的逻辑表达式如下:对应的的逻辑表达式如下: y(x-3)y(x-3)3逻辑运算符的优先级和结合性逻辑运算符的优先级和结合性 !高于高于& ,&高于高于|。 !高于算术运算符,高于算术运算符,&、|低于关系运算符。低于关系运算符。 &、|是左结合的,是左结合的,

13、!是右结合的。是右结合的。4逻辑表达式的值逻辑表达式的值 逻辑表达式的值是一个逻辑表达式的值是一个逻辑值逻辑值。ab!aa&ba|b真真假真真真假假假真假真真假真假假真假假A AB BB BA AA A(a)逻辑)逻辑“与与” (b)逻辑)逻辑“或或” (c)逻辑)逻辑“非非” 例例2-4 2-4 判断学生成绩的档次。判断学生成绩的档次。当学生的学习的成绩不低于当学生的学习的成绩不低于8080分,但是又不足分,但是又不足9090分时,属于分时,属于良好档次。设成绩用良好档次。设成绩用averageaverage表示,写出判断良好档次的逻表示,写出判断良好档次的逻辑表达式。辑表达式。解题

14、分析:解题分析: 成绩不低于成绩不低于8080分,关系式表示:分,关系式表示: average=80average=80 成绩不足成绩不足9090分分, , 关系式表示:关系式表示: average90average=80 & average=80 & average90对于给定的成绩对于给定的成绩averageaverage,若该逻辑表达式的值为,若该逻辑表达式的值为1 1,则,则averageaverage为良好档次。为良好档次。例例2-5判断某年份是否闰年。判断某年份是否闰年。当某一年份是当某一年份是400的整倍数或者是的整倍数或者是4的整倍数、但不是的整倍数、但不是10

15、0的整倍数时,该年为闰年。设用变量的整倍数时,该年为闰年。设用变量year表示年份,写出判表示年份,写出判断闰年的逻辑表达式。断闰年的逻辑表达式。解题分析:解题分析: 当当year是是400的整倍数时为闰年:的整倍数时为闰年: year%400=0 当当year是是4的整倍数、但不是的整倍数、但不是100的整倍数时为闰年:的整倍数时为闰年: year%4=0 & year%100!=0 对于年份对于年份year,满足上述任何一个条件均为闰年:,满足上述任何一个条件均为闰年: year%400=0|year%4=0&year%100!=0对于给定的年份对于给定的年份year,若该

16、逻辑表达式的值为,若该逻辑表达式的值为1,则为闰年。,则为闰年。 常用的逻辑运算规律常用的逻辑运算规律 逻辑运算中有很多有趣的规律。例如:逻辑运算中有很多有趣的规律。例如:n(1) 在一个在一个&表达式中,若表达式中,若&的一端为的一端为0,则不必再计算另,则不必再计算另一端,该表达式的值肯定为一端,该表达式的值肯定为0(在在C语言中由于语言中由于&是从左向右结是从左向右结合的,所以只考虑左端,即当合的,所以只考虑左端,即当&号的左端为号的左端为0时,不再计算其时,不再计算其右端右端),可以把它记为:,可以把它记为: 0 & a=0n(2) 在一个在一个

17、|表达式中,若表达式中,若|的一端为的一端为1,则不必计算另一端,则不必计算另一端,该该|表达式的值必为表达式的值必为1。现把它记为:。现把它记为: 1|a=1 诸如此类关于表达式的值的规律有如下一些:诸如此类关于表达式的值的规律有如下一些: 0|a=a1&a=a 1|a=10&a=0 a|!a=1 0&!a=0 以及以及 a|a=aa&a=a!(a|b)=!a&!b!(a&b)=!a|!b !(!a)=a记住这些规律,能使复杂的逻辑运算简化、清晰。记住这些规律,能使复杂的逻辑运算简化、清晰。自增运算和自减运算只适用于自增运算和自减运算只适用于整

18、型变量整型变量,其功能是对参加,其功能是对参加运算的变量进行加运算的变量进行加1或减或减1操作操作 。说明:说明:+ - 不能用于常量和表达式不能用于常量和表达式,如如5+,(a+b)+ - 结合方向:结合方向: 自右向左自右向左/* program e2-6.c */#include void main() int i=6; printf(%d,i+); printf(%dn,+i);例例 j=3; k=+j; j=3; k=j+; a=3; b=5; c=(+a)*b; a=3; b=5; c=(a+)*b; j=j+1; k=j; /k=4,j=4/k=4,j=4k=j; j=j+1;

19、/k=3,j=4/k=3,j=4/c=20,a=4/c=20,a=4/c=15,a=4/c=15,a=4n 简单的赋值运算简单的赋值运算“= =”n 复合的赋值运算复合的赋值运算 常用算符有常用算符有5 5种:种: +=, -=, +=, -=, * *=, /=, %=, /=, %= 运算符名称复合赋值运算实例展开形式+=复合加赋值a+=ba=a+b-=复合减赋值a-=ba=a-b*=复合乘赋值a*=ba=a*b/=复合除赋值a/=ba=a/b%=复合模赋值a%=ba=a%bn左侧必须是数值变量、结构成员、间接指针和数组分量中的一个,不能是常量或其它表达式赋值转换规则:使赋值号右边表达式值

20、自动转换成其左边变量的类型赋值表达式是表达式,则可嵌套,其值就是被赋值后变量的值例例 3=x-23=x-2* *y;y; a+b=3; a+b=3; 例例 int i; int i; i=2.56; / i=2.56; /结果结果i=2;i=2;例例: a=b=c=5: a=b=c=5 a=(b=5) a=(b=5) a=5+(c=6) a=5+(c=6) a=(b=4)+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) a=(b=10)/(c=2)/表达式值为表达式值为5 5,a,b,ca,b,c值为值为5 5/表达式值表达式值5 5, b=5;a=5b=5;a=5/表达

21、式值表达式值1111,c=6,a=11c=6,a=11/表达式值表达式值1010,a=10,b=4,c=6a=10,b=4,c=6/表达式值表达式值5 5,a=5,b=10,c=2a=5,b=10,c=2例例 float f; float f; int i; int i; i=10; i=10; f=i; f=i;则则 f=10.0f=10.0例例: int a=2;: int a=2; a%=4-1; a%=4-1; a=12; a=12; a+=a-=a a+=a-=a* *a a/a=-264 /a=-264 等价于等价于a=a+(a=a-(aa=a+(a=a-(a* *a)a)/a=2

22、/a=2n条件运算表达式一般形式条件运算表达式一般形式 表达式1?表达式2:表达式3 例如:5?19+6:21。n条件运算的求值过程条件运算的求值过程u计“表达式1”的值;u当“表达式1”的值非0时,取“表达式2”的值为 条件运算表达式的值;否则,取“表达式3”的值为条件运算表达式的值。0)(x 25x 0)(x 25xyn逗号运算符即逗号运算符即“, ,”,用它将两个表达式连接起来构成的式子称为逗号表达式。 3+5,6+8n逗号表达式的一般形式逗号表达式的一般形式 表达式1,表达式2,表达式3,表达式nn逗号表达式求值规则逗号表达式求值规则u先求解表达式 1,再求解表达式 2,最后求解表达式

23、n。u整个逗号表达式的值是表达式n 的值。例例2-8 计算计算 a=3*5,a*4 的值。的值。例例 a=3*5,a*4 a=3*5,a*4,a+5例例 x=(a=3,6*3) x=a=3,6*a/a=15,表达式值表达式值60/a=15,表达式值表达式值20/赋值表达式,表达式值赋值表达式,表达式值18,x=18/逗号表达式逗号表达式,表达式值表达式值18,x=3例例:/*ch2_5.c*/#include main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x);运行结果:运行结果:x=3隐式转换什么情况下发生运算转换运算转换-

24、不同类型数据混合运算时不同类型数据混合运算时赋值转换赋值转换-把一个值赋给与其类型不同的变量时把一个值赋给与其类型不同的变量时输出转换输出转换-输出时转换成指定的输出格式输出时转换成指定的输出格式函数调用转换函数调用转换-实参与形参类型不一致时转换实参与形参类型不一致时转换运算转换规则:不同类型数据运算时先自动转换成同一类型n u 若参与运算量的类型不同,则先转换成同一类型,若参与运算量的类型不同,则先转换成同一类型,然后进行运算。然后进行运算。u 转换按数据长度增加的方向进行,以保证精度不降转换按数据长度增加的方向进行,以保证精度不降低。如低。如int型和型和long型运算时,先把型运算时,先把int量转成量转成long型后型后再进行运算。再进行运算。u 所有的浮点运算都是以双精度进行的,即使仅含所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成单精度量运算的表达式,也要先转换成double型,型,再作运算。再作运算。u char型和型和short型参与运算时,必须先转换成型参与运算时,必须先转换成int型。型。u 在赋值运算中,赋值号两侧量的数据类型不同时,在赋值运

温馨提示

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

评论

0/150

提交评论