C语言程序设计第2章-1数据类型运算符和表达式

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第2章数据类型、运算符和表达式常用的进位制数与字符在计算机内存中的表示方法C语言基本数据类型常量与变量数据的输出与输入2C语言的基本数据类型概述C数据类型基本类型构造类型指针类型(*)空类型(void)字符类型(char)枚举类型(enum)整型实型单精度型(float)双精度型(double)数组([])结构体(struct)共用体(union)短整型(short)长整型(long)整型(int)C数据类型基本类型构造类型指针类型(*)空类型(void)字符类型(char)枚举类型(enum)整型实型单精度型(float)双精度型(double)数组([])结构体(struct)共用体(union)短整型(short)长整型(long)整型(int)数据类型决定:1.数据占用的存储空间的长度2.数据的取值范围3.数据的处理方法32.1.1二进制、八进制和十六进制数2.1常用的进位制42.1.2十、二进制、八进制和十六进制数之间的换算⒈二、八、十六进制数→十进制数的换算采用按权展开法。(2AB.F)16=2χ162+10χ161+11χ160+15χ16-1=683.93⒉十进制数→二进制数的换算整数部分采用除以二取余直到商为零、小数部分采用乘以二取整直到小数部分为零。233.8125=(11101001.1101)2⒊二进制数→八、十六进制数的换算:三位二进制数对应一位八进制数、四位二进制数对应一位十六进制数,所以转换时以小数点为分界线,整数部分从低到高,小数部分从高到低按位数分组,每组对应相应的八或十六进制数码。(1101100.1011)2=(01101100.1011)2=(6C.B)1652.2.1机器数和真值⒈机器数:通常把一个数的最高位作为符号位,称为数符,用“0”表示正,“1”表示负,其余位仍然表示数值。2.2数与字符在计算机内存中的表示方法6⒉真值:带符号位的机器数对应的数值称为机器数的真值。(10100011)2=-35⒊无符号数:当计算机字长的所有二进位都用来表示数值时,称为无符号数。2.2.2原码、反码和补码⒈原码整数X的原码指:其数符位0表示正,1表示负,其数值部分就是X的绝对值的二进制表示。[-1]原=10000001,[-127]原=11111111⒉反码整数X的反码指:对于正数与原码相同;对于负数,数符位为1,其数值部分就是X的绝对值取反。[-1]反=11111110,[-127]反=100000007⒊补码整数X的补码指:对于正数与原码相同;对于负数,数符位为1,其数值部分就是X的绝对值取反后最低位加1。[-1]补=11111111,[-127]补=100000012.2.3定点数和浮点数⒈定点数当约定小数点位置固定在机器数的最低位之后时,称定点整数。当约定小数点位置固定在符号位之后,有效数值部分最高位之前时,称为定点小数。⒉浮点数浮点数表示法与科学计数法相似,例如十进制数2002168.0022可以写成:2002168.0022=0.20021680022X107=2.0021680022X106=200216800.22X10-28任何一个二进制的浮点数可以表示成:100.011=10001.1χ2-010=0.100011χ2+011=0.0100011χ2+100在计算机中规定浮点数的尾数采用纯小数形式,如果尾数最高位为1,称为规格化数。9浮点数在计算机内部的表示形式如下:例如二进制数N=-0.1011χ211在机器中的存放方式如下所示(阶符一位,阶码两位原码,数符一位,尾数四位原码)2.2.4字符编码对字符的编码方法很多,使用最普遍的是美国标准信息交换码(AmericanStandardCodeforInformationInterchange),简称ASCII码。10整数类型根据数据所占的二进制位数分为:int、short、long;同样存储长度的数据又分unsigned、signed;故可组合出六种类型。其值域由机器中数据的存储长度决定,如TurboC中,有short(2字节)≤int(2字节)≤long(4字节)。实数类型实型数据又称为浮点型数据,分为float和double两类,其中:float型实数能接收7位有效数字,double型实数能接收15位有效数字。字符类型其类型标识符为char,在内存中占一个字节,字符型数据在内存中以ASCII码存储,其ASCII码值为0~127,如字符‘a’的ASCII码值为97,用01100001表示。11类型符号关键字数的表示范围所占位数整型有无(signed)int(signed)short(int)(signed)long(int)UnsignedintUnsignedshortUnsignedlong实型字符型有有有无floatdoublecharUnsignedchar161632161632326488-32768~327670~65535-32768~32767-2147483648~21474836470~655350~4294967295约3.4E-38~3.4E38约1.7E-308~1.7E308-128~1270~255说明:数据类型所占字节数随机器硬件不同而不同,上表以IBMPC机为例。122.3常量2.3.1常量常量指在程序运行的整个过程中,其值始终保持不变的量。常量可以有不同的类型,可分为直接常量和符号常量。131.整型常量十进制整型常量:由数字0~9和正负号表示。如123,-456,0,而024,25o错误。八进制整型常量:以数字0为前缀,后跟数字0~7表示。如0123,011。十六进制整型常量:由0x或0X开头,后跟0~9,a~f,A~F表示。如0x123,0Xff。注意:在程序中是根据前缀来区分各种进制数的,一定要前缀正确。八进制与十六进制一般只表示正数。长整型常数的表示方法是加后缀“L”或“l”。无符号数可用后缀“U”或“u”来表示。常量的前后缀可同时使用以表示各种类型的数,如:98L,78u,017lu,0xaau,0X1fL。问题:135=()100135=()100x135=()10问题:135=(135)100135=(93)100x135=(309)10142.实型常量C中实型常量只能用十进制形式表示,有以下两种表示方式:一般形式:由0~9的数字和小数点组成如2.1,2.,.1,-1.456指数形式:由十进制数加上阶码标志“e”或“E”以及阶码组成,可表示为aEn,其中a为十进制数,n为十进制整数且可以带符号,其所表示的值为a*10n注意:小数点不能单独出现,如:.是错误的。指数形式表示中“e”或“E”两边必须有数据且后面必须为整数实型常量默认为double类型,可以通过在常量后加‘f’或‘F’使常量转换为float类型。例如:3.56F153.字符常量字符常量是用单撇号括起来的单个字符或转义字符,如:‘a’,‘9’,‘&’,‘\n’,‘\’’,‘\101’。字符常量的值为该字符的ASCII码值,如‘a’值为97,‘\n’值为10,‘0’值为48。注意:字符常量只能用单撇号括起来,不能用其他符号。字符常量只能是单个字符,不能是字符串。字符可以是字符集中任意字符,其中的数字字符与数字整型常量是不同的,例如:‘6’和6的不同。转义字符:以反斜杠‘\’开头的一个或几个字符,具有特定的含义,不同于字符原有的含义。例如:‘\n’中的n不代表字符n,而作为换行符。字符形式转义后功能描述\n换行\t横向跳格\b退格\r回车\\反斜杠字符\’单撇号字符\ddd1-3位八进制数所代表的字符\xhh1-2位十六进制数所代表的字符16可把一个字符常量赋值给一个字符变量,但不能把一个字符串常量赋值给一个字符变量。例如:charm;m=“A”;4.字符串常量字符串常量是由一对双撇号括起来的字符序列,如“hello”,“a”,“19”,“”,“”,“0&$”。字符串常量的长度:字符串中的字符个数,如“”长度为0。每个字符串串尾自动加一个‘\0’作为字符串结束标志。如“hello”在内存中为而空串“”在内存中为hello\0\0注意:一个字符常量占1个字节的内存空间,而字符串常量所占内存字节数等于其长度加1。aa\0例‘a’“a”175.符号常量符号常量指用标识符定义一个直接常量,它的值在程序中始终不变。定义形式:#define标识符直接常量如:#definePI3.14159注意:#define是一条宏定义预处理命令,不是C语句。符号常量的标识符一般用大写字母。符号常量在使用之前必须先定义,定义后程序中遇到该标识符处都用其定义的直接常量值代替。例符号常量举例#defineRATE30main(){inthour,salary;hour=10;salary=hour*RATE;printf(“salary1=%d,salary);hour=30;salary=hour*RATE;printf(“salary2=%d,salary);}18注意:变量必须先定义后使用,且定义一般放在函数体的开头部分。比较变量名和变量值:变量名为合法标识符,代表内存中某一存储空间,该存储空间中的数据就是该变量的值。2.4变量变量概念:程序执行过程中其值可以改变的量。变量声明:类型标识符变量名1[,变量名2,变量名3,…];变量初始化:在变量定义时对其赋值(变量=赋值表达式)如int,char,决定分配给变量的字节数和变量的表示范围合法标识符如inta;charx,y;其中:”=”为赋值符号,不同于等于号”==“,赋值运算自右向左,赋值表达式的值是赋值后变量的值例如:inta=2,b,c=-1;intx=1,y=2,z=3;但不允许连续初始化多个变量,如intx=y=z=1错误;同一函数中不允许变量重名;”=“左右的数据类型应该一致。变量赋值:变量=赋值表达式编译程序根据变量定义为其分配指定字节的内存单元…...地址inta=1,b=-3,c;abc2字节2字节2字节地址地址…...内存1-3随机数191、按运算符的功能分成:算术运算符、关系运算符、逻辑运算符、赋值运算符、位运算符、条件运算符、自增和自减运算符、逗号运算符、指针运算符、强制类型转换运算符、分量运算符、下标运算符、求字节数运算符、函数调用运算符等等。2、C语言的运算符的优先级与结合性3、表达式:由操作数和运算符组成的序列。2.5常用运算符与表达式202.5.1算术运算符与算术表达式⒈基本的算术运算符:+(加法运算符,或正值运算符);-(减法运算符,或负值运算符);*(乘法运算符);/(除法运算符);%(求余运算符或模运算符)。⑴两个类型相同的操作数进行运算,其结果类型与操作数类型相同。例如7/4的结果值为1。不同类型的数据要先转换成同一类型,然后进行运算。21⑵求余运算要求运算符%的两边的操作数必须为整数,余数的符号与被除数符号相同。15%(-7)=1、(-15)%7=-1。⒉算术表达式(1)用算术运算符和括号将运算对象连接起来的式子称为算术表达式。运算对象包括常量、变量、函数等等。例如:x*y/z+2002.168–15%(-7)+’A’。(2)C语言规定算术运算符的优先级为:先做*、/、%,后做+、-,即“*、/、%”属同一优先级,“+、-”属同一优先级,而且前者优先级高于后者。在表达式求值时,同一优先级的运算符的运算顺序规定为“自左至右”,即运算对象先与左面的运算符结合。也称为“左结合性,如表2-5所示。例如算术表达式x-y/z*w的求值顺序相当于x–(y/z)*w)。22(3)数学表达式写成C语言表达式232.5.2赋值运算符和赋值表达式赋值运算符用“=”来表示。它的作用是将一个表达式的值赋给一个变量,而不是数学中的等号。1.形式:变量=表达式2.求值规则:将“=”右边表达式的值赋给左边的变量。3.结合性:自右至左x=(y=12)*(z=8)表达式的值为96,y等于12,z等

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功