资源预览内容
第1页 / 共85页
第2页 / 共85页
第3页 / 共85页
第4页 / 共85页
第5页 / 共85页
第6页 / 共85页
第7页 / 共85页
第8页 / 共85页
第9页 / 共85页
第10页 / 共85页
亲,该文档总共85页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第2章章 数据的存储与运算数据的存储与运算2.1 数据在计算机中是怎样存储的数据在计算机中是怎样存储的2.2 整型数据的运算与分析整型数据的运算与分析2.3 实型数据的运算与分析实型数据的运算与分析2.4 字符型数据的运算字符型数据的运算2.5 符号常量符号常量2.6 算术运算符和算术表达式算术运算符和算术表达式2.7 C运算符和运算符和C表达式表达式2.8 提高部分提高部分2.1 2.1 数据在计算机中是怎样存储的数据在计算机中是怎样存储的数据在计算机中是怎样存储的数据在计算机中是怎样存储的2.1.1 数据在计算机中是以二进制形式存储的数据在计算机中是以二进制形式存储的2.1.2 位、字节和地址位、字节和地址2.1.3 不同类型数据的存储方式不同类型数据的存储方式P16计算机内部的信息都是用计算机内部的信息都是用二进制二进制表示表示计算机存储器是用半导体集成电路构成的计算机存储器是用半导体集成电路构成的有两种稳定的工作状态:有两种稳定的工作状态:“导导” 与与“截止截止”,即电脉冲的,即电脉冲的“有有”与与“无无”分别用分别用“1”和和“0”表示表示2.1.1 2.1.1 数据在计算机中是数据在计算机中是数据在计算机中是数据在计算机中是以二进制形式存储的以二进制形式存储的以二进制形式存储的以二进制形式存储的P16若相邻的若相邻的8个二极管元件中第个二极管元件中第1,3,5,7个元个元件处于件处于“导通导通”状态,第状态,第2,4,6,8个元件处个元件处于于“截止截止”状态,用状态,用“10101010”表示表示 导通导通 截止截止 导通导通 截止截止 导通导通 截止截止 导通导通 截止截止 1 0 1 0 1 0 1 0 2.1.1 2.1.1 数据在计算机中是数据在计算机中是数据在计算机中是数据在计算机中是以二进制形式存储的以二进制形式存储的以二进制形式存储的以二进制形式存储的P162.1.1 2.1.1 数据在计算机中是数据在计算机中是数据在计算机中是数据在计算机中是以二进制形式存储的以二进制形式存储的以二进制形式存储的以二进制形式存储的P16十十进进制数制数二二进进制数制数0 00 01 11 12 210103 311114 41001005 5101101十十进进制数制数二二进进制数制数6 61101107 71111118 8100010009 9100110011010101010102.1.2 位、字节和地址位、字节和地址位位(bit) ,又称,又称“比特比特” 。每一个二极管元。每一个二极管元件称为一个件称为一个“二进制位二进制位”,是,是存储信息的最存储信息的最小单位小单位。它的值是。它的值是“1”或或“0”字节字节(byte) ,又称,又称“拜特拜特” 。一般将。一般将8个个“二进制位二进制位”组织成一组,称为组织成一组,称为“字节字节”。这是人们这是人们最常用的存储单位最常用的存储单位P172001200220032004200520062.1.2 位、字节和地址位、字节和地址地址地址。计算机的存储器包含许多存储单元,。计算机的存储器包含许多存储单元,操作系统把所有存储单元以字节为单位编号操作系统把所有存储单元以字节为单位编号P17345789 2.1.3 不同类型数据的存储方式不同类型数据的存储方式整数的存储方式整数的存储方式u一个十进制整数,先转换为二进制形式一个十进制整数,先转换为二进制形式u如整数如整数10,以二进制形式表示是,以二进制形式表示是1010P180 0 0 0 1 0 1 00 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0用一字节存放用一字节存放用两字节存放用两字节存放负数负数按按补码补码形式形式存放存放2.1.3 不同类型数据的存储方式不同类型数据的存储方式实数的存储形式实数的存储形式u对于实数,一律采用指数形式存储对于实数,一律采用指数形式存储u123.456标准化指数形式标准化指数形式为为0.123456 103P18+.12345+3数符数符 数值部分数值部分指数符号指数符号指数指数2.1.3 不同类型数据的存储方式不同类型数据的存储方式字符的存储方式字符的存储方式u对于字符,按对于字符,按ASCII代码代码存放存放uA的的ASCII代码是代码是65(1000001)P180 1 0 0 0 0 0 12.2 2.2 整型数据的运算与分析整型数据的运算与分析整型数据的运算与分析整型数据的运算与分析2.2.1 整型数据运算程序举例和分析整型数据运算程序举例和分析2.2.2 整型常量与整型变量整型常量与整型变量P192.2.1 2.2.1 整型数据运算程序举例和分析整型数据运算程序举例和分析整型数据运算程序举例和分析整型数据运算程序举例和分析 例例2.1 鸡兔同鸡兔同笼笼。在一个茏子里同时养着。在一个茏子里同时养着一些鸡和兔子,你想了解有多少只鸡和多一些鸡和兔子,你想了解有多少只鸡和多少只兔,主人对你说:我只告诉你鸡和兔少只兔,主人对你说:我只告诉你鸡和兔的总头数是的总头数是16和和总脚数是总脚数是40,你能不能,你能不能自己计算有多少只鸡和多少只兔自己计算有多少只鸡和多少只兔?P192.2.1 2.2.1 整型数据运算程序举例和分析整型数据运算程序举例和分析整型数据运算程序举例和分析整型数据运算程序举例和分析解题思路:解题思路:u设设x代表鸡的数量,代表鸡的数量,y代表兔的数量,总头代表兔的数量,总头数为数为h,总脚数为,总脚数为fu列出下面的方程式:列出下面的方程式: x + y = h (1) 2x + 4y = f (2)u解方程得到:解方程得到:P192.2.1 2.2.1 整型数据运算程序举例和分析整型数据运算程序举例和分析整型数据运算程序举例和分析整型数据运算程序举例和分析#include void main() int h,f,x,y; h=16; f=40; y=(f-2* h)/2; x=h-y; printf(“%d%dn”,x,y); P19定义整型变量定义整型变量h,f,x,y使使h的值等于的值等于16使使f的值等于的值等于40计算兔的个数计算兔的个数计算鸡的个数计算鸡的个数2.2.1 2.2.1 整型数据运算程序举例和分析整型数据运算程序举例和分析整型数据运算程序举例和分析整型数据运算程序举例和分析#include void main() int h,f,x,y; h=16; f=40; y=(f-2* h)/2; x=h-y; printf(“%d%dn”,x,y); P19输出鸡和兔个数输出鸡和兔个数124%d,%d2.2.1 2.2.1 整型数据运算程序举例和分析整型数据运算程序举例和分析整型数据运算程序举例和分析整型数据运算程序举例和分析#include void main() int h,f,x,y; h=16; f=40; y=(f-2* h)/2; x=h-y; printf(“%d%dn”,x,y); P19输出鸡和兔个数输出鸡和兔个数12,4%d,%dcock=%d, rabbit=%d2.2.1 2.2.1 整型数据运算程序举例和分析整型数据运算程序举例和分析整型数据运算程序举例和分析整型数据运算程序举例和分析#include void main() int h,f,x,y; h=16; f=40; y=(f-2* h)/2; x=h-y; printf(“%d%dn”,x,y); P19输出鸡和兔个数输出鸡和兔个数12,4cock=%d, rabbit=%dcock=12, rabbit=42.2.1 2.2.1 整型数据运算程序举例和分析整型数据运算程序举例和分析整型数据运算程序举例和分析整型数据运算程序举例和分析定义变量的一般形式是:定义变量的一般形式是: 类型名类型名 变量名变量名;u例如:例如:int h,f,x,y;u变量都必须在使用前定义,指定变量都必须在使用前定义,指定其其类型类型u赋值:赋值:h=37; f=88;P192.2.2 2.2.2 整型常量与整型变量整型常量与整型变量整型常量与整型变量整型常量与整型变量常量和变量常量和变量u常量是指在程序运行过程中其值不能常量是指在程序运行过程中其值不能改变的量改变的量u变量是指在程序运行过程中其值可以变量是指在程序运行过程中其值可以改变的量改变的量P222.2.2 2.2.2 整型常量与整型变量整型常量与整型变量整型常量与整型变量整型常量与整型变量常量和变量常量和变量u要注意区别要注意区别变量名变量名和和变量值变量值P2216h2000存储单元存储单元变量名变量名变量地址变量地址变量值变量值2.2.2 2.2.2 整型常量与整型变量整型常量与整型变量整型常量与整型变量整型常量与整型变量常量和变量常量和变量u要注意区别变量名和变量值要注意区别变量名和变量值P2216h2000执行执行h=37;372.2.2 2.2.2 整型常量与整型变量整型常量与整型变量整型常量与整型变量整型常量与整型变量u变量名的取名规则变量名的取名规则l变量名第一个字符必须是字母或下划线,变量名第一个字符必须是字母或下划线,其后字符必须是字母、数字或下划线其后字符必须是字母、数字或下划线P22合法合法:sum,average, _total, Class, day, month, Student_name,tan,li_ling不合法不合法:Zhang-sun,Students,263.com, $123,33,3D642.2.2 2.2.2 整型常量与整型变量整型常量与整型变量整型常量与整型变量整型常量与整型变量变量名的取名规则变量名的取名规则l变量名第一个字符必须是字母或下划线,变量名第一个字符必须是字母或下划线,其后字符必须是字母、数字或下划线其后字符必须是字母、数字或下划线l大小写字母代表不同的字符,一般,程序大小写字母代表不同的字符,一般,程序中的变量名用小写字母表示中的变量名用小写字母表示l变量名的长度不是无限的变量名的长度不是无限的l变量名尽量简单易记、见名知意变量名尽量简单易记、见名知意l在同一函数中,不同变量不能取相同名在同一函数中,不同变量不能取相同名P222.2.2 2.2.2 整型常量与整型变量整型常量与整型变量整型常量与整型变量整型常量与整型变量变量必须变量必须“先定义,后使用先定义,后使用”l根据定义变量时指定的类型,编译系统为根据定义变量时指定的类型,编译系统为变量分配相应的存储单元变量分配相应的存储单元l凡未被事先定义的,系统不把它认作变量凡未被事先定义的,系统不把它认作变量名,保证程序中变量名使用得正确名,保证程序中变量名使用得正确l指定了每一变量属于一个类型,就便于在指定了每一变量属于一个类型,就便于在编译时据此检查在程序中要求对该变量进编译时据此检查在程序中要求对该变量进行的运算是否合法行的运算是否合法P222.2.2 2.2.2 整型常量与整型变量整型常量与整型变量整型常量与整型变量整型常量与整型变量u变量类型相当于建造房屋的图纸变量类型相当于建造房屋的图纸,按照同一,按照同一套图纸可以建造出许多套外形和结构完全相套图纸可以建造出许多套外形和结构完全相同的房屋,它们具有相同的特征同的房屋,它们具有相同的特征u类型是抽象的,变量是具体的类型是抽象的,变量是具体的u图纸相当于一系列的规则和要求,依照它进图纸相当于一系列的规则和要求,依照它进行施工。但光有图纸是不能住人的,只有建行施工。但光有图纸是不能住人的,只有建成的房屋才能住人成的房屋才能住人u类型不占存储单元类型不占存储单元,不能用来存储数据,而,不能用来存储数据,而变量占存储单元变量占存储单元,可以用来存储数据,可以用来存储数据P222.2.2 2.2.2 整型常量与整型变量整型常量与整型变量整型常量与整型变量整型常量与整型变量整型常量的表示形式整型常量的表示形式u除了常用的十进制形式外,还允许使用除了常用的十进制形式外,还允许使用八进八进制制形式和形式和十六进制十六进制形式表示的数形式表示的数整型变量的种类整型变量的种类u基本整型,类型名为基本整型,类型名为intu长整型,类型名为长整型,类型名为long intu短整型,类型名为短整型,类型名为short intuP222.3 2.3 实型数据的运算与分析实型数据的运算与分析实型数据的运算与分析实型数据的运算与分析2.3.1 实型数据的运算举例实型数据的运算举例2.3.2 实型常量的表示形式实型常量的表示形式2.3.3 实型变量实型变量P242.3.1 2.3.1 实型数据的运算举例实型数据的运算举例实型数据的运算举例实型数据的运算举例 例例2.2 分期付款的计算。张先生为购房,分期付款的计算。张先生为购房,向银行贷款,贷款额为向银行贷款,贷款额为D元,每月准备元,每月准备还还P元,月利率为元,月利率为R,求需要多少个月才,求需要多少个月才能还清。能还清。P24m是还清贷款所需月数是还清贷款所需月数d=324500,p=3245,r=0.8%2.3.1 2.3.1 实型数据的运算举例实型数据的运算举例实型数据的运算举例实型数据的运算举例(1)d和和p是整数,是整数,r是一个小数,因此程是一个小数,因此程序中要分别定义整型变量和实型变量。序中要分别定义整型变量和实型变量。(2)公式中用到对数公式中用到对数log,这个对数是以,这个对数是以10为底的。对数为底的。对数log的函数的函数log10P242.3.1 2.3.1 实型数据的运算举例实型数据的运算举例实型数据的运算举例实型数据的运算举例#include #include void main() int d,p; float r,m; d=324500; p=3245; r=0.008; m=(log10(p)-log10(p-d*r)/log10(1+r); printf(“month=%fn”,m); printf(“total=%fn”,m*p); P24用到用到数学函数数学函数时时定义整型变量定义整型变量d,p定义定义实实型变量型变量r,m赋值赋值求求m的值的值2.3.1 2.3.1 实型数据的运算举例实型数据的运算举例实型数据的运算举例实型数据的运算举例#include #include void main() int d,p; float r,m; d=324500; p=3245; r=0.008; m=(log10(p)-log10(p-d*r)/log10(1+r); printf(“month=%fn”,m); printf(“total=%fn”,m*p); P24输出输出m的值的值计算并输出还款数计算并输出还款数total=655436.127930month=201.983404输出实数时输出实数时2.3.1 2.3.1 实型数据的运算举例实型数据的运算举例实型数据的运算举例实型数据的运算举例#include #include void main() int d=324500,p=3245; double r=0.008,m; m=(log10(p)-log10(p-d*r)/log10(1+r); printf(“month=%fn”,m); printf(“total=%fn”,m*p); P24定义变量时赋初值定义变量时赋初值定义定义double型无警告错型无警告错2.3.2 2.3.2 实型常量的表示形式实型常量的表示形式实型常量的表示形式实型常量的表示形式实数在计算机语言中常称为浮点数实数在计算机语言中常称为浮点数u十进制小数形式十进制小数形式 如:如:0.123, 123.23, 0.0u指数形式指数形式 如:如:123e3或或123E3P262.3.3 2.3.3 实型变量实型变量实型变量实型变量实型变量的分类实型变量的分类u单精度实型变量(单精度实型变量(float型)型)u双精度实型变量(双精度实型变量(double型)型)u长双精度实型变量(长双精度实型变量(long double型)型)P272.3.3 2.3.3 实型变量实型变量实型变量实型变量实型变量的分类实型变量的分类实型数据的舍入误差实型数据的舍入误差u实型变量是由有限的存储单元组成的实型变量是由有限的存储单元组成的u能提供的有效数字总是有限的能提供的有效数字总是有限的u在有效位以外的数字将被舍去在有效位以外的数字将被舍去u会产生一些误差会产生一些误差P272.3.3 2.3.3 实型变量实型变量实型变量实型变量实型变量的分类实型变量的分类实型数据的舍入误差实型数据的舍入误差例例2.3 实型数据的舍入误差实型数据的舍入误差P27#include void main() float a; a = 1234.1415926; printf(a=%fn,a);a=1234.1416027位有效位位有效位2.3.3 2.3.3 实型变量实型变量实型变量实型变量实型变量的分类实型变量的分类实型数据的舍入误差实型数据的舍入误差把实数按双精度数处理把实数按双精度数处理u把程序中的实常量处理成双精度型,分配把程序中的实常量处理成双精度型,分配8个个字节,以提高精度。字节,以提高精度。P27a = 1234.1415926;双精度双精度单精度单精度编译时有警告编译时有警告最好:最好:double a;2.4 2.4 字符型数据的运算字符型数据的运算字符型数据的运算字符型数据的运算2.4.1 字符数据运算的简单例子字符数据运算的简单例子2.4.2 字符常量和字符变量字符常量和字符变量2.4.3 字符串常量字符串常量P292.4.1 2.4.1 字符数据运算的简单例子字符数据运算的简单例子字符数据运算的简单例子字符数据运算的简单例子 例例2.4 逐个输出英文字母逐个输出英文字母C,H,I,N,A。然后按反序输出,即然后按反序输出,即A,N,I,H,C。P29#include void main() char a=C,b=H,c=I,d=N,e=A; printf(“%c%c%c%c%cn”,a,b,c,d,e); printf(“%c%c%c%c%cn”,e,d,c,b,a); 定义字符变量定义字符变量2.4.1 2.4.1 字符数据运算的简单例子字符数据运算的简单例子字符数据运算的简单例子字符数据运算的简单例子 例例2.4 逐个输出英文字母逐个输出英文字母C,H,I,N,A。然后按反序输出,即然后按反序输出,即A,N,I,H,C。P29#include void main() char a=C,b=H,c=I,d=N,e=A; printf(“%c%c%c%c%cn”,a,b,c,d,e); printf(“%c%c%c%c%cn”,e,d,c,b,a); 用单撇号括起来用单撇号括起来输出字符输出字符CHINA ANIHC2.4.2 2.4.2 字符常量和字符变量字符常量和字符变量字符常量和字符变量字符常量和字符变量字符常量字符常量u字符常量是用单撇号括起来的一个字符字符常量是用单撇号括起来的一个字符u英文字母可以作为字符常量英文字母可以作为字符常量u键盘上的字符都可以作为字符常量键盘上的字符都可以作为字符常量u小写字母和大写字母是不同的字符常量小写字母和大写字母是不同的字符常量P292.4.2 2.4.2 字符常量和字符变量字符常量和字符变量字符常量和字符变量字符常量和字符变量转义字符转义字符u转义字符必须以反斜杠转义字符必须以反斜杠“”开头开头u“”后只能有一个字符后只能有一个字符(或代表字符的或代表字符的8进进制或制或16进制数进制数)P292.4.2 2.4.2 字符常量和字符变量字符常量和字符变量字符常量和字符变量字符常量和字符变量t 跳到下一个输出区跳到下一个输出区b 消除前一个已输出的字符消除前一个已输出的字符r 将当前的输出位置返回在本行开头将当前的输出位置返回在本行开头f 将当前的输出位置移到下页的开头将当前的输出位置移到下页的开头0 常用于字符串中,作为串结束标志常用于字符串中,作为串结束标志 代表一个反斜杠字符代表一个反斜杠字符“” 代表一个单撤号字符代表一个单撤号字符” 代表一个双撤号字符代表一个双撤号字符ddd 13位位8进制数所代表的字符进制数所代表的字符xhh 12位位16进制数所代表的字符进制数所代表的字符P292.4.2 2.4.2 字符常量和字符变量字符常量和字符变量字符常量和字符变量字符常量和字符变量字符变量字符变量u用来存放字符常量用来存放字符常量u只能放一个字符只能放一个字符u字符变量的定义形式:字符变量的定义形式: char 字符变量列表字符变量列表;P292.4.2 2.4.2 字符常量和字符变量字符常量和字符变量字符常量和字符变量字符常量和字符变量字符数据与整型数据在一定条件下通用字符数据与整型数据在一定条件下通用uchar c=a;与与char c=97;等价等价P292.4.2 2.4.2 字符常量和字符变量字符常量和字符变量字符常量和字符变量字符常量和字符变量字符数据与整型数据在一定条件下通用字符数据与整型数据在一定条件下通用u例例2.5 将两个整数分别赋给两个字符变量,将两个整数分别赋给两个字符变量,再将字符数据按字符和整数形式输出。再将字符数据按字符和整数形式输出。 #include void main() char c1=97,c2=98; printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); P29char c1=a,c2=b;a b97 982.4.2 2.4.2 字符常量和字符变量字符常量和字符变量字符常量和字符变量字符常量和字符变量字符数据与整型数据在一定条件下通用字符数据与整型数据在一定条件下通用u例例2.5 将两个整数分别赋给两个字符变量,将两个整数分别赋给两个字符变量,再将字符数据按字符和整数形式输出。再将字符数据按字符和整数形式输出。字符字符a的存储(用的存储(用ASCII代码存放)代码存放) P2901100001按按%c输出:输出:a按按%d输出:输出:97printf(“%c %cn”,97+1,a+1); 输出什么?输出什么?2.4.2 2.4.2 字符常量和字符变量字符常量和字符变量字符常量和字符变量字符常量和字符变量字符数据与整型数据在一定条件下通用字符数据与整型数据在一定条件下通用u例例2.5 将两个整数分别赋给两个字符变量,将两个整数分别赋给两个字符变量,再将字符数据按字符和整数形式输出。再将字符数据按字符和整数形式输出。P29b bprintf(“%d %dn”,97+1,a+1); 输出什么?输出什么?98 982.4.2 2.4.2 字符常量和字符变量字符常量和字符变量字符常量和字符变量字符常量和字符变量字符数据与整型数据在一定条件下通用字符数据与整型数据在一定条件下通用u例例2.6 将小写字母转换为大写字母。将小写字母转换为大写字母。 #include void main() char c1=a,c2=b; c1=c1-32; c2=c2-32; printf(%c,%cn,c1,c2); P29a97 A65b98 B66c99 C67规律是?规律是?A,B2.4.3 2.4.3 字符串常量字符串常量字符串常量字符串常量字符串常量是一对双撇号括起来的字符字符串常量是一对双撇号括起来的字符序列序列How do you do. CHINAa都是合法的字符串都是合法的字符串P332.4.3 2.4.3 字符串常量字符串常量字符串常量字符串常量字符串常量是一对双撇号括起来的字符字符串常量是一对双撇号括起来的字符序列序列u是字符常量是字符常量u是字符串常量是字符串常量u二者的含义是不同的二者的含义是不同的P33char c;c=a;正确正确char c;c=”a”;错误错误存放字符存放字符a的存储单元的存储单元存放字符串存放字符串”a”的存储单元的存储单元a0a2.5 2.5 符号常量符号常量符号常量符号常量2.5.1 符号常量符号常量的作用的作用2.5.2 符号常量的性质和使用方法符号常量的性质和使用方法P342.5.1 2.5.1 符号常量符号常量符号常量符号常量的作用的作用的作用的作用 例例2.7求以求以r为半径的圆周长为半径的圆周长c和圆面积和圆面积s,再求以,再求以r为半径的圆球体积为半径的圆球体积v。P35 c=2*3.1415926*r; s=3.1415926*r*r; v=4/3*3.1415926*r*r*r;#include void main()double r=3.67,c,s,v; c= 2 * 3.1415926 *r; s= 3.1415926 * r*r ; v= 4/3 * 3.1415926 * r*r*r ; printf(“c=%fns=%fnv=%fn”,c,s,v);c=23.059290s=42.313797v=155.291633有错有错4.0/3.0#include void main()double r=3.67,c,s,v; c= 2 * 3.1415926 *r; s= 3.1415926 * r*r ; v= 4.0/3.0 * 3.1415926 * r*r*r ; printf(“c=%fns=%fnv=%fn”,c,s,v);c=23.059290s=42.313797v=207.055511pow(r,2)pow(r,3)#include #include #include void main()double r=3.67,c,s,v; c= 2 * 3.1415926 *r; s= 3.1415926 * pow(r,2); v= 4.0/3.0 * 3.1415926 *pow(r,3); printf(“c=%fns=%fnv=%fn”,c,s,v);c=23.059290s=42.313797v=207.055511#define PI 3.1415926PIPIPI#include #include void main()double r=3.67,c,s,v; c= 2 * PI *r; s= PI * pow(r,2); v= 4.0/3.0 * PI *pow(r,3); printf(“c=%fns=%fnv=%fn”,c,s,v);c=23.059290s=42.313797v=207.055511#define PI 3.1415926符号常量符号常量2.5.2 2.5.2 符号常量的性质和使用方法符号常量的性质和使用方法符号常量的性质和使用方法符号常量的性质和使用方法#define不是不是C语句,行末没有分号语句,行末没有分号#define是一个是一个“预编译命令预编译命令”符号常量符号常量一般一般用大写用大写,以示以示与变量与变量区别区别好处:好处:u含义清楚含义清楚u在需要改变一个常量时能做到在需要改变一个常量时能做到“一改全改一改全改”u用符号常量能保护所代表的数据不被破坏用符号常量能保护所代表的数据不被破坏P362.6 2.6 算术运算符和算术表达式算术运算符和算术表达式算术运算符和算术表达式算术运算符和算术表达式2.6.1 算术运算符算术运算符2.6.2 算术表达式算术表达式P382.6.1 2.6.1 算术运算符算术运算符算术运算符算术运算符P381.基本的算术运算符基本的算术运算符:+ :加法运算符加法运算符 - :减法运算符减法运算符* :乘法运算符乘法运算符/ :除法运算符除法运算符% :求余运算符求余运算符(要求要求两侧均两侧均为整数。为整数。如如19%4,结果为,结果为3 )2.6.1 2.6.1 算术运算符算术运算符算术运算符算术运算符P38两个整数相除的结果为整数两个整数相除的结果为整数u如如5/3的结果值为,舍去小数部分的结果值为,舍去小数部分u如果除数或被除数中有一个为负值,舍入方如果除数或被除数中有一个为负值,舍入方向不固定向不固定。例如,例如,-5/3,有的系统中得到,有的系统中得到的结果为的结果为-1,在有的系统中则得到结果为,在有的系统中则得到结果为-2uVC+采取采取“向零取整向零取整”的方法的方法u如如5/3=1,-5/3=-1,取整后向零靠拢,取整后向零靠拢2.6.1 2.6.1 算术运算符算术运算符算术运算符算术运算符P38如果参加如果参加+、-、*、/ 运算的两个数中有一运算的两个数中有一个数为个数为float或或double型,则结果都是型,则结果都是double型,因为系统将所有型,因为系统将所有float型数据型数据都先转换为都先转换为double型,然后进行运算。型,然后进行运算。这是为了提高运算精度这是为了提高运算精度。2.6.1 2.6.1 算术运算符算术运算符算术运算符算术运算符P382. 自增、自减运算符:自增、自减运算符:作用是使变量的值增或减作用是使变量的值增或减u+i,-i:在使用:在使用i之前,先使之前,先使i的值加(减)的值加(减)1ui+,i-:在使用:在使用i之后,使之后,使i的值加(减)的值加(减)12.6.2.2.6.2.算术表达式算术表达式算术表达式算术表达式P39用算术运算符和括号将运算对象(也称用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则操作数)连接起来的、符合语法规则的式子,称为算术表达式的式子,称为算术表达式运算对象包括常量、变量、函数等运算对象包括常量、变量、函数等2.6.2.2.6.2.算术表达式算术表达式算术表达式算术表达式P39各类数值型数据各类数值型数据间的混合运算间的混合运算uchar和和short型转换为型转换为int型型ufloat型一律转换为型一律转换为double型型u整型整型 (包括包括int,short,long) 数据与数据与double型型数据进行运算,先将整型转换为数据进行运算,先将整型转换为double型型2.6.2.2.6.2.算术表达式算术表达式算术表达式算术表达式P39各类数值型数据各类数值型数据间的混合运算间的混合运算 10 + a + i * f - d / e先将先将a转换成整数转换成整数97,运算结果为,运算结果为107i为整型为整型f为为float型型d为为double型型e为为long型型2.6.2.2.6.2.算术表达式算术表达式算术表达式算术表达式P39各类数值型数据各类数值型数据间的混合运算间的混合运算 10 + a + i * f - d / e107先将先将i与与f转成转成double型,运算结果为型,运算结果为double型型i为整型为整型f为为float型型d为为double型型e为为long型型2.6.2.2.6.2.算术表达式算术表达式算术表达式算术表达式P39各类数值型数据各类数值型数据间的混合运算间的混合运算 10 + a + i * f - d / e107double型型先将先将107转换成双精度转换成双精度型型,结果为,结果为double型型i为整型为整型f为为float型型d为为double型型e为为long型型2.6.2.2.6.2.算术表达式算术表达式算术表达式算术表达式P39各类数值型数据各类数值型数据间的混合运算间的混合运算 10 + a + i * f - d / e107double型型double型型转换为转换为double型型double型型最终结果为最终结果为double型型i为整型为整型f为为float型型d为为double型型e为为long型型2.6.2.2.6.2.算术表达式算术表达式算术表达式算术表达式P39强制类型转换强制类型转换u在表达式中也可以利用在表达式中也可以利用“强制类型转换强制类型转换”运算运算符将数据转换成所需的类型符将数据转换成所需的类型(double)a (将转换成(将转换成double类型)类型)(int) (x+y) (将(将x+y的值转换成的值转换成int型)型) (float)(5%3)(将(将5%3的值转换成的值转换成float型)型)2.6.2.2.6.2.算术表达式算术表达式算术表达式算术表达式P39强制类型转换强制类型转换u强制类型转换的一般形式为强制类型转换的一般形式为: (类型名)(表达式)(类型名)(表达式)例例2.8 强制类型转换。强制类型转换。#include void main ( ) float f=3.6; int i; i=(int)f; printf(f=%f,i=%dn,f,i);f3.600000,i=3不改变不改变f的值的值2.6.2.2.6.2.算术表达式算术表达式算术表达式算术表达式P39强制类型转换强制类型转换u强制类型转换的一般形式为强制类型转换的一般形式为: (类型名)(表达式)(类型名)(表达式)有两种类型转换有两种类型转换u系统自动进行的类型转换系统自动进行的类型转换u强制类型转换强制类型转换2.7 C2.7 C运算符和运算符和运算符和运算符和C C表达式表达式表达式表达式2.7.1 C运算符运算符2.7.2 C表达式表达式P41(1) 算术运算符算术运算符 (+ - * / %)(2) 关系运算符关系运算符 ( !)!)(3) 逻辑运算符逻辑运算符 (!(! |)(4) 位运算符位运算符 ( | )(5) 赋值运算符赋值运算符 (及其扩展赋值运算符)(及其扩展赋值运算符)(6) 条件运算符条件运算符 (?:)(?:)2.7.1 C2.7.1 C运算符运算符运算符运算符P41(7) 逗号运算符逗号运算符 (,),)(8) 指针运算符指针运算符 (* )(9) 求字节数运算符求字节数运算符 (sizeof)(10) 强制类型转换运算符强制类型转换运算符 ( (类型类型) )(11) 成员运算符成员运算符 (.-)(12) 下标运算符下标运算符 ( )(13) 其他其他 (如函数调用运算符()(如函数调用运算符()2.7.1 C2.7.1 C运算符运算符运算符运算符P41箅术表达式箅术表达式。如。如2+6.7*3.5+sin(0.5)关系表达式关系表达式。如。如x0,y0 & y0 (表示表示x0与与y0同时成立同时成立,&是逻辑运算符,代表是逻辑运算符,代表“与与”)赋值表达式赋值表达式。如。如a=5.6逗号表达式逗号表达式。如。如a=3,y=4,z=8 用逗号连接若干个用逗号连接若干个表达式,顺序执行这些表达式,整个逗号表达式的表达式,顺序执行这些表达式,整个逗号表达式的值是最后一个表达式的值值是最后一个表达式的值(今为今为8)2.7.2 C2.7.2 C表达式表达式表达式表达式P422.8 2.8 提高部分提高部分提高部分提高部分2.8.1 求补码的方法求补码的方法2.8.2 整型常量的表示形式整型常量的表示形式2.8.3 整型变量的类型整型变量的类型2.8.4 整型常量的类型整型常量的类型2.8.5 运算符的优先级与结合性运算符的优先级与结合性P422.8.1 2.8.1 求补码的方法求补码的方法求补码的方法求补码的方法计算机不论对正数和负数都按计算机不论对正数和负数都按“补码补码”形形式存放到存储单元式存放到存储单元对于正数来说,补码就是该数的对于正数来说,补码就是该数的“原码原码”(该数的二进制形式该数的二进制形式)负数的补码不是它的原码负数的补码不是它的原码P42求求-1的的补码的方法是:补码的方法是:00000001原码原码11111110诸位取反诸位取反反码反码11111111反码加反码加1补码补码2.8.1 2.8.1 求补码的方法求补码的方法求补码的方法求补码的方法P42求求一个负数的一个负数的补码的方法是:补码的方法是:u取该数取该数(不考虑数的符号不考虑数的符号)的二进制形式,它的二进制形式,它就是原码就是原码u对该原码逐位对该原码逐位“取反取反”(逐位把逐位把0变变1,把,把1变变0),得到其,得到其“反码反码”u将得到的反码加将得到的反码加12.8.1 2.8.1 求补码的方法求补码的方法求补码的方法求补码的方法P42求求-10的的补码的方法是补码的方法是?00001010原码原码11110101诸位取反诸位取反反码反码11110110反码加反码加1补码补码2.8.1 2.8.1 求补码的方法求补码的方法求补码的方法求补码的方法P422.8.2 2.8.2 整型常量的表示形式整型常量的表示形式整型常量的表示形式整型常量的表示形式在语言中,整常数可用在语言中,整常数可用3种形式表示种形式表示:u10进制整数,如进制整数,如123,-456u8进制整数,特点是逢进制整数,特点是逢8进进1。在程序中凡以。在程序中凡以0开头的数都认作开头的数都认作8进制数进制数u16进制整数。特点是逢进制整数。特点是逢16进进1。用。用09、af分别代替分别代替015。在程序中凡以。在程序中凡以0x开开头的数都认头的数都认作作16进制数进制数P43a=83; /* 10进制数进制数 */a=0123; /* 8进制数进制数 */ a=0x53; /* 16进制数进制数 */可以定义和使用以下可以定义和使用以下6种整型变量:种整型变量:u有符号基本整型有符号基本整型 signed intu无符号基本整型无符号基本整型 unsigned intu有符号短整型有符号短整型 signed short intu无符号短整型无符号短整型 unsigned short intu有符号长整型有符号长整型 signed long intu无符号长整型无符号长整型 unsigned long int2.8.3 2.8.3 整型变量的类型整型变量的类型整型变量的类型整型变量的类型P44在计算机语言中,常量是有类型的,这也是在计算机语言中,常量是有类型的,这也是计算机的特点计算机的特点数据是要存储的,不同类型的数据所分配的数据是要存储的,不同类型的数据所分配的字节和存储方式是不同的字节和存储方式是不同的整型变量有类型,整型变量有类型,因此因此整型常量也应该有类整型常量也应该有类型,才能在赋值时匹配型,才能在赋值时匹配u根据常量的大小、数后面加的根据常量的大小、数后面加的字母字母l或或L、u或或U判断其类型判断其类型2.8.4 2.8.4 整型常量的类型整型常量的类型整型常量的类型整型常量的类型P45先按运算符的优先级别高低次序执行先按运算符的优先级别高低次序执行如果优先级别相同,则按规定的如果优先级别相同,则按规定的“结合结合方向方向”处理处理2.8.5 2.8.5 运算符的优先级与结合性运算符的优先级与结合性运算符的优先级与结合性运算符的优先级与结合性P45
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号