第2章C语言数据结构及其运算

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

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

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

资源描述

第二章数据结构及其运算考试要求:1.C的数据结构及其定义:基本类型,构造类型,指针类型,空类型2.C运算符的种类,运算优先级和结合性。3.不同类型数据之间的转换与运算。4.C表达式类型和求值规则:赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式。0(整型)1.2(实型)2441.414‘a’(字符型)7070.510010006059.9Student12345610002字节问:为什么要分数据类型?答:2.不同的数据类型存储格式不同1.不同的数据类型所实施的操作不同.第2.1节数据类型简单语句复合语句1.C的数据类型分为:基本类型,构造类型,指针类型,空类型。2.基本类型又包括:整型,字符型,实型(单精度型,双精度型),枚举型3.构造类型又包括:数组类型,结构体类型和共用体类型。C语言中的数据有常量和变量之分,但是它们都属于以上这些类型。2.1.1常量与变量1.常量281685.13.14‘a’‘y’在程序运行中,其值不能被改变的量叫做常量。常量可以划分为不同的类型,如12,0,-3为整型常量;4.6,-3.15为实型常量;‘a’,’p’为字符型常量。也可以用一个标示符来代表一个常量。如:#definepi3.1415符号常量#defineafsj1682变量area=2其值可以改变的量叫做变量。一个变量应该有一个名字,在内存中占据一定的存储单元。该存储单元中存放变量的值。注意变量名和变量值。变量名的命名规则和标示符的命名规则相同。inta;(为a分配了一个存储单元)a=2;简单说标示符就是一个名字。在C语言中,要求对所有用到的变量作强制定义,也就是“先定义,后使用”。2.1.2基本类型整型包括整形常量,整型变量。整型常量就是整常数。在C中使用的整常数有:八进制,十六进制和十进制。1.整型整型常量1)八进制整常数必须以0(零)开头,用0做八进制的前缀。由0~7八个数字组成。合法的八进制数有:017,0101,0177777;分别表示十进制的15,65,65535。不合法的如:256(没有前缀),03A2(出现了非八进制数码),-0127(出现了负号)。2)十六进制整常数它的前缀为0X或0x。由0~9,A~F或a~f十个数字和六个字母组成。合法的十六进制整常数有:0X2A,0XA0,0XFFFF;不合法的十六进制整常数有:5A(没有前缀),0Xf(出现了非十六进制数码)。3)十进制整常数十进制整常数没有前缀。有0~9十个数字组成。合法的十进制整常数有:237,-568,65533,1627。168不合法的十进制整常数有:023(不能有前缀),23D(含有非十进制数码)。整型变量整形变量可分为下面几类:基本整型(int),短整型(shortint),长整型(longint),无符号型(unsigned)数据类型的定义格式:数据类型说明符变量名标示符1,变量名标示符2,….变量名标示符n;如:inta;表示定义一个整型变量a;intx,y,z;表示定义整型变量x,y,z;shortb;表示定义短整型变量blongi,j,k;表示定义长整型变量i,j,k整型变量的存储方式下表罗列了C中数据类型在内存中占用的字节数类型名称数值范围占用字节数int-32768~327674Shortint-32768~327672longint-3147483648~21474836474Unsignedint0!655352float4double8char1intsizeof(int)=42.实型量实型常量实型也叫浮点型.实型常量也叫实数或浮点数.在C语言中实数只采用十进制.它有两种形式:十进制数形式和指数形式.1)十进制数形式由0~9和小数点组成.例如:0.01,.125,5.6789,0.123,15.0,-234.54等都是合法的实数.2)指数形式类似数学中的指数形式,C中的指数形式一般格式为:aEn(a为十进制数,n为十进制整数),如1.2E3(表示的是1.2*10)下面不是合法的实数:345(没有小数点),E7(阶码标志E之前没有数字),-5(没有阶码标志),53.-E(负号位置不对),2.7E(没有阶码).实型变量实型变量分为两类:单精度型(float)和双精度型(double).在C中单精度占4个字节(32位)内存空间,双精度占8个字节(64位)内存空间.doublea;a=2.2;3字符型字符型量包括字符常量和字符变量.字符常量字符常量是用单引号括起来的一个字符如:’a’,’c’,’+’,’=’等都是合法的字符常量.’&’‘’‘2’转义字符‘\n’以反斜线’\’开头,后跟一个或几个字符.它具有特定的含义,不同于字符原有的意义,所以叫做转义字符.例如’\n’就是一个转义字符它的意义是回车换行.‘t’‘a’‘~’‘#’字符变量字符变量的取值是字符常量,即单个字符.字符变量的类型说明符是char如:chara,b;/*定义a,b为字符变量*/a=’!’;charx1,x2;x1=’!’;x2=x1;floata,b;a=2.5;b=a;字符串常量它是由一对双引号括起来的字符序列.例如:”world”,”Iamastudent”等””“a”‘a’字符串常量的存储方式是:字符串常量占的内存字节数等于字符串中所有字符的字节数加1.增加的一个字节中存放’\0’这是结束标志.;如:字符串”sss”,一共头3个字符,在内存中要占用4个字节长度:字符串结束之前的字符个数。由此,字符串常量和字符常量的不同:1)字符常量由单引号括起来,而字符串常量由双引号括起来.2)字符常量只能是单个字符,字符串则是n个字符组成3)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量,因为C语言中没有相应的字符串变量;4)字符常量占一个字节的内存空间.字符串常量占的内存字节数等于字符串中所有字符的字节数加1.如:’a’的内存字节数为1,而”a”的内存字节数为2.2.1.3构造类型构造类型是根据已经定义的一个或多个数据类型用构造的方法来定义的.也就是说,一个构造类型的值可以分解为若干个”成员”或”元素”.每个成员都是一个基本数据类型或又是一个构造类型.构造类型有下面几种:1)数组类型:把相同数据类型的若干变量按有序的形式组织起来.2)结构类型:是由若干相同的或不同的数据类型构造而成的3)共用体类型:在共用体中,各成员共享用一段内存空间,所以一个共用体变量的长度等于各成员中最长的一个成员的长度2.1.4指针类型2.1.5空类型在调用函数时,通常应该向调用者返回一个函数值.如:intmax(inta,intb)该函数的返回值是一个整型数值,但也有一类函数,调用后不需要返回函数值,这种函数可以定义为”空类型”,他的类型说明符为void如定义一个没有返回值的函数:voidfun(chara,charb)2.2运算符和表达式1+3inta,b,c;a=2;b=3;c=a+b;表达式是将运算量用运算符连接起来组成的式子,其中运算量可以是常量,变量,或函数.+-*/%算术运算符==关系运算符&&||!逻辑运算符2.2.1优先级和结合性+-*/%+*优先级最底的是逗号2.2.2算术运算用在各类数值运算.包括加,减,乘,除,求余,自增,自减1)双目运算符1+2运算符必须连接两个运算量.+,-,*,/,%2)单目运算符号是指运算符只能连接一个运算量.++,--(在原来的基础上加1或减1;)inta,b,c;b=4;3a=5;6c=++a+(b--);10++,--在前,先操作,再引用;++--在后,先引用,再操作;算术表达式是用算术运算符连接起来的有常量,变量,函数组合起来的式子.一个表达式要有一个值和他的类型如:2.2.3赋值运算1)赋值运算符分为简单赋值(=)和复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=等等)inta;a=3;a+=3;6a/=4;a=6/4a=12)赋值表达式用”=”连接起来的式子.它一般的格式为:变量=表达式注意:赋值运算中的类型转换在C中的赋值表达式中,赋值号右边的值先转换成与赋值号左边的变量相同的类型,然后进行赋值(不要四舍五入,直接截去小数部分)。inta;a=2.8;2.2.4逗号表达式C语言中的逗号也是一种运算符,叫做逗号运算符,它的功能是把多个表达式连接起来组成一个表达式。逗号表达式的一般格式为:表达式1,表达式2…..表达式n其求值过程是:先计算表达式1,在计算表达式2…..最后计算表达式n.并且最后一个表达式n的的值为整个逗号表达式的结果如:inta,b,c;a=1;b=2;c=a++,b++,++a;2.2.5关系运算和逻辑运算1)关系运算符和关系表达式作用:在程序中经常需要比较两个量的大小关系,来决定程序的下一步的工作.比较两个量大小的运算符称为关系运算符.主要有:,,==,=,=,!=六种关系运算符关系运算符都是双目运算符,其结合性都是左结合.由关系运算符组成的表达式叫做关系表达式.例如:a=b,c3/2等等,他们的值是”真”和”假”,用”1”和”0”来表示.例如:50的值为”真”,就是1.注意:当关系运算符两边的值类型不一致时,如果一边是整型,一边是实型,C系统将自动把整型转换为实型数,然后进行比较.2)逻辑运算符和逻辑表达式C语言中提供了三种逻辑运算符与(&&),或(||),非(!),其中逻辑与和逻辑或是双目运算,而逻辑非是单目运算.由逻辑运算符和运算对象所组成的表达式叫做逻辑表达式.逻辑运算的值也是”真”和”假”,分别用”1”和”0”来表示.三种逻辑运算的求值规则为:Ab!a!ba&&bA||b110011100101011001001100例如:!(50)的结果为假,用0来表示,所以它的值为0.嵌套的逻辑表达式,如(a&&b)&&c等等2.2.6测试数据长度运算符sizeof运算符是一个单目运算符功能:用于计算数据类型所占用的字节数,它的返回值为变量或类型的字节长度.例如:sizeof(int);/*返回值是2*/sizeof(float);/*返回值是4*/sizeof(double);/*返回值是8*/也可以求已经定义的变量如:floath;intx;x=sizeof(h);那么x的值为42.2.7数据类型的转换转换方法有两种:自动转换和强制转换.1.自动转换自动转换遵循以下规则:1)如果参与运算的的数据类型不同,则需要先转换成相同的类型,然后进行运算.2)数据类型的转换按数据长度增加的方向进行,以保证数据的精度不降低,例如:int型和long型进行运算时,先把前者转换成后者再进行运算.3)所有的浮点运算都是以双精度进行的,即使仅含float单精度型的表达式,也要先转换成双精度型再进行运算.4)char和short型参与运算时先转换成int型5)在赋值运算时,如果赋值号两边的数据类型不一样时,赋值号右边量的数据类型先转换成赋值号左边量的数据类型,假如右边量的数据类型长度比左边长,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入2.强制类型转换intchar,shortdoublelongunsigned格式:(类型说明符)(表达式)作用:把表达式的运算结果强制转换成类型说明符所表示的类型。如:(float)a把a转换成实型(int)(a+b)/*把a+b的结果转换成int型*/注意:类型说明符和表达式必须加括号(单个变量的表达式可以不加括号)2.2.7位运算C中的按位运算有下面几种:按位操作符作用&位逻辑与|位逻辑或^位逻辑异或-位逻辑反右移左移注意:所有参与位运算的量,都是按二进制位运算的.它只适用于字符型和整型变量以及它们的变体,对其他的数据类型不适用.(1)按位与运算&按位与运算符”&”是双目运算符.运算规则是:参与运算的两个数各对应的二进制位相与,只有对应的两个二进位都是1时,结果位才为1,否则为0如:9&5=1(2)按位或运算|它是一个双目运算符运算规则是::参与运算的两个数各对应的二进制位相或

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

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

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

×
保存成功