C语言开发基础教程第2章-数据类型与运算符-教学PPT_课件_第1页
C语言开发基础教程第2章-数据类型与运算符-教学PPT_课件_第2页
C语言开发基础教程第2章-数据类型与运算符-教学PPT_课件_第3页
C语言开发基础教程第2章-数据类型与运算符-教学PPT_课件_第4页
C语言开发基础教程第2章-数据类型与运算符-教学PPT_课件_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章 数据类型与运算符 运算符与表达式 运算符优先级 阶段案例 关键字与标识符 常量与变量 数据类型2.1.1 关键字C语言的C89标准中共定义了32个关键字,而C99标准在C89的基础上又增加了5个关键字,分别为restrict、inline、_Bool、_Complex、_Imaginary,因此,C99中一共有37个关键字。2.1.1 关键字auto break case char const continue default do double else enum extern float for goto if inline int long register restrict r

2、eturn short signed sizeof static struct switch typedef union unsigned void volatile while _Bool _Complex _Imaginary2.1.2 标识符标识符命名规范如下所示: 标识符只能由字母、数字和下划线组成。 标识符不能以数字作为第一个字符。 标识符不能使用关键字。 标识符区分大小写字母,如add、Add和ADD是不同的标识符。2.1.2 标识符除了命名规则,标识符命名时尽量做到以下几点要求: 直观、可以拼读,尽量做到见名知意。 最好采用英文单词或其组合,避免使用汉语拼音或汉字。 尽量避免出现

3、仅靠大小写区分的标识符。 虽然ANSIC中没有规定标识符的长度,但建议标识符的长度不超过8个字符。2.1.2 标识符在C语言中比较常用的标识符命名方式有两种:1、驼峰命名法驼峰命名法使用英文单词来构成标识符的名字,其中第一个单词首字母小写,余下的单词首字母大写。如果英文单词过长,则可以取前单词的前几个字母。例如:int seatCount; /表示座位数量2.1.2 标识符在C语言中比较常用的标识符命名方式有两种:1、下划线命名法下划线命名法是指使用下划线连接标识符的各组成部分。例如:int seat_count; /表示座位数量2.2.1 常量1、整型常量整型常量是整数类型的常量,又被称为整

4、常数。根据不同的计数方法,整型常量可记为二进制整数、八进制整数、十进制整数和十六进制整数。2、浮点型常量浮点数常量就是在数学中用到的小数,也称为实型常量或实数。2.2.1 常量3、字符型常量(1)普通字符,即由单引号括起来的一个字符。(2)转义字符,由单引号括起来的包括反斜杠()的一串字符,如nt0等。转义字符表示将反斜杠后的字符转换成另外的意义,通常用来表示不能显示的字符,nt0这三个转义字符分别表示换行、TAB和空字符。2.2.1 常量C语言中的字符常量共计128个,它们都收录在ASCII码表中。注 意2.2.2 变量变量是用于标识数值可以变化的量。变量被存储在内存单元中,为了访问、使用和

5、修改内存单元中的数据,人们用标识符来标识存储数据的内存单元,这些用于标识内存单元的标识符被称为变量名,内存单元中存储的数据被称为变量的值。2.2.2 变量定义变量x、y,并进行运算:int x = 0,y;y = x+3;则变量x、y在内存中的变化如下图。y=x+3多学一招:const关键字C语言中可使用const关键字修饰变量,实现防止变量在定义后被修改的效果。使用const修饰的变量称为常变量需要注意的是,虽然理论上常变量不能被修改,但C语言中仍能通过某些方法间接更改常变量的值。2.3 数据类型2.3.1 基本类型1、整型形如0、-100、1024这些不包含小数部分的数据都称为整型数据。在

6、C语言中,根据数值的取值范围,可以将整型分为短整型(short int)、基本整型(int)和长整型(long int)。2.3.1 基本类型修饰符数据类型占用空间取值范围signedshort int16位(2个字节)-32768到32767 (-215 215-1)int32位(4个字节)-2147483648到2147483647 (-231 231-1)long int32位(4个字节)-2147483648到2147483647 (-231 231-1)unsignedshort int16位(2个字节)0到65535 (0 216-1)int32位(4个字节)0到429496729

7、5 (0 232-1)long int32位(4个字节)0到4294967295 (0 232-1)2.3.1 基本类型1、整型整型数据可以被修饰符signed和unsigned修饰。其中,被signed修饰的整型称为有符号的整型,被unsigned修饰的整型称为无符号的整型,它们之间最大的区别是:无符号整型可以存放的正数范围比有符号整型的大一倍。默认情况下,整型数据都是有符号的,因此signed修饰符可以省略。 小提示:字节字节(Byte)是计算机存储空间的一种单位,它是内存分配空间的一个基础单位,即内存分配空间至少是1个字节。 最小的存储单位位(bit,b);一个二进制数字0或1占一位。

8、字节(Byte,B):1B=8bit;一个英文字母占一个字节。 千字节(KiloByte,KB):1KB=1024B。 兆字节(MegaByte,MB):1MB=1024KB。 吉字节(GigaByte,GB):1GB=1024MB。 太字节(TeraByte,TB):1TB=1024GB。2.3.1 基本类型整型数据在内存中占的字节数与所选择的操作系统有关,例如,在16位操作系统中,int类型占2个字节,而在32位和64位操作系统高级中,int类型占4个字节。虽然C语言标准中没有明确规定整型数据的长度,但long类型整数的长度不能短于int类型,short类型整数的长度不能短于int类型。注

9、 意多学一招:进制与进制转换进制是一种计数机制,它可以使用有限的数字符号代表所有的数值。X进制表示某一位置上的数在运算时逢X进一位。1、二进制二进制是一种“逢二进一”的计数机制,它由0和1两个符号描述。使用二进制表示数据时,逢2进一位。2、八进制八进制是一种“逢八进一”的进制,它由07八个符号描述。使用八进制表示数据时,逢8进一。多学一招:进制与进制转换3、十六进制十六进制是一种“逢十六进一”的进制,它由09、AF(或af)这16个符号来描述,AF分别对应十进制的1015。多学一招:进制与进制转换在计算机中,不管是用哪种进制形式来表示数据,数据本身是不会发生变化的,因此,这些进制之间是可以相互

10、转换的。多学一招:进制与进制转换1、二进制转换成十进制二进制转化成十进制要从右到左用二进制位上的每个数去乘以2的相应次方,即将最右边第1位的数乘以2的0次方,第2位的数乘以2的1次方,第n位的数乘以2的n-1次方,然后把所有乘的结果相加,得到的结果就是转换后的十进制。多学一招:进制与进制转换2、十进制转换成二进制十进制转换成二进制可以采用除2取余的方式。也就是说,将要转换的数,先除以2,得到商和余数,将商继续除以2,获得商和余数,此过程一直重复直到商为0,最后将所有得到的余数倒序排列,即可得到转换结果。多学一招:进制与进制转换十进制数字6转换为二进制:多学一招:进制与进制转换2、二进制转换成八

11、进制二进制转换为八进制时,将二进制数自右向左每3位分成一段(若不足3位,用0补齐),然后将二进制每段的3位转为八进制的一位,将每段的数值表替换即可。多学一招:进制与进制转换二进制与八进制关系对应表二进制八进制00000011010201131004101511061117多学一招:进制与进制转换2、二进制转换成十六进制二进制转换为十六进制时,将二进制数自右向左每4位分成一段(若不足4位,用0补齐),然后将二进制每段的4位转为十六进制的一位,将每段的数值表替换即可。多学一招:进制与进制转换二进制与十六进制关系对应表二进制十六进制0000000011001020011301004010150110

12、60111710008100191010A1011B1100C1101D1110E2.3.1 基本类型2、浮点型C语言中将浮点数分为float(单精度浮点数)和double(双精度浮点数)两种,其中,double型变量所表示的浮点数比float型变量更精确。单精度浮点数后面以F或f结尾,双精度浮点数则以D或d结尾。浮点数的后缀可以省略,若省略,默认为双精度浮点数。2.3.1 基本类型浮点型长度及其取值范围类型名占用空间 取值范围float32位(4个字节)1.4E-45 3.4E+38,-1.4E-45 -3.4E+38double64位(8个字节)4.9E-324 1.7E+308, -4.

13、9E-324 -1.7E+3082.3.1 基本类型在C语言中,一个小数默认为double类型,因此在为一个float类型的变量赋值时需要注意一点,所赋值的后面一定要加上字母“F”(或者小写“f”),而为double类型的变量赋值时,其所赋值后面的字符“D”(或小写“d”),可以省略。注 意脚下留心:float和double之间的数据转换浮点型变量占据的存储单元有限,因此只能提供有限的有效数字。有效位以外的数字将被舍去,这样可能会产生一些误差。例如,float类型的数据只能保证前7位是有效的,示例代码如下:float f = 3.141592612;printf(%fn,f);这两行代码的输出

14、结果为3.141593,后面的3位被舍去了。2.3.1 基本类型3、字符型字符型变量用于存储一个单一字符,在C语言中用char表示,其中每个字符变量都会占用1个字节。在给字符型变量赋值时,需要用一对英文半角格式的单引号()把字符括起来。2.3.1 基本类型char ch = A;定义变量ch内存中ch的值652.3.1 基本类型除了可以直接从键盘上输入的字符(如英文字母,标点符号,数字,数学运算符等)以外,还有一些字符是无法用键盘直接输入的,比如,“回车”,此时需要采用一种新的定义方式转义字符,它以反斜杠开头,随后接特定的字符。注 意2.3.1 基本类型转义字符对应字符ASCII码表中的值t制

15、表符(Tab键)9n换行10r回车13双引号34单引号39反斜杠92部分常见转义字符表多学一招:ASCII码表ASCII编码是一个标准,其内容规定了把英文字母、数字、标点、字符转换成计算机能识别的二进制数的规则。多学一招:ASCII码表ASCII码大致由以下两部分组成。1、ASCII非打印控制字符ASCII表上的数字0-31分配给了控制字符,用于控制打印机等一些外围设备。2、ASCII打印字符数字32-126分配给了能在键盘上找到的字符,数字127代表 DELETE命令。2.3.2 构造类型1、数组数组是一组具有相同数据类型的变量集合,这些变量称为数组的元素,数组的类型由数组中存储的元素的类型

16、决定。数组2.3.2 构造类型定义数组时要指定数组的类型和大小,例如:int arr5; /定义一个int类型的数组,大小为5char str10; /定义一个char类型的数组,大小为10float ff10; /定义一个float类型的数组,大小为102.3.2 构造类型2、枚举枚举类型用于定义值可以被一一列举的变量,其定义格式如下:enum 枚举名 标识符1 = 整型常量1, 标识符2 = 整型常量2, .;enum为用于声明枚举类型变量的关键字,枚举名表示枚举变量的名称。2.3.2 构造类型枚举类型、变量的声明如下:enum month JAN=1, FEB=2, MAR=3, APR

17、=4, MAY=5, JUN=6, JUL=7, AUG=8, SEP=9, OCT=10, NOV=11, DEC=12 ;enum month lastmonth, thismonth, nextmonth;lastmonth = APR; /给lastmonth赋值为APRthismonth = MAY; /给thismonth赋值为MAYnextmonth = JUN; /给nextmonth赋值为JUN2.3.2 构造类型枚举值是常量,不是变量,在程序中不能赋值。注 意多学一招:枚举变量的快速定义在枚举中规定,如果不给标识符指定具体的值,会默认该标识符的值等于前一标识符的值加1。共用

18、体2.3.2 构造类型3、共用体共用体又叫联合体,它可以把不同数据类型的变量整合在一起。共用体数据类型使用union关键字进行声明。2.3.2 构造类型共用体声明方式:共用体类型声明格式:union 共用体类型名称 数据类型 成员名1; 数据类型 成员名2; 数据类型 成员名n;定义共用体类型data:union data int i; char ch; ;2.3.2 构造类型共用体变量定义方式:先定义类型再定义变量union data int i; char ch;union data a,b;定义类型同时定义变量union data int i; char ch;a,b;2.3.2 构造类

19、型共用体变量定义方式:匿名定义union int i; char ch;a,b;2.3.2 构造类型共用体变量初始化格式:union 共用体类型名 共用体变量=其中一个成员的类型值; 共用体变量名.成员变量 = 值;在使用第一种方式赋值时,虽然共用体变量初始化时只给一个成员赋值,但是这个成员值必须要使用大括号括起来。2.3.2 构造类型定义了共用体变量之后,需要对共用体变量进行初始化,对共用体变量进行初始化时只能对其中一个成员进行初始化。注 意2.3.2 构造类型共用体成员变量引用:共用体变量.成员名 如果连续给多个成员变量赋值,则后面的赋值会覆盖掉前面的赋值,最终共用体变量中只有最后一个成员

20、变量值是有效的。2.3.2 构造类型结构体与共用体类似,它也可以将不同数据类型的变量整合在一起,区别在于,结构体中的所有成员都占有内存,在引用结构体变量时,所有成员都有效。结构体使用关键字struct定义。2.3.3 指针类型指针的强大作用:(1)可编写底层代码。(2)使数据结构更灵活。(3)支持动态内存分配。(4)降低内存开销。2.3.4 类型转换隐式类型转换(1)不同类型的数据进行运算,系统会自动将低字节(占内存小的数据类型)数据类型转换为高字节(占内存大的数据类型)数据类型,即从下往上转换。(2)在赋值类型不同时,即变量的数据类型与所赋值的数据类型不同,系统会将“=”右边的值转换为变量的

21、数据类型再将值赋值给变量。2.3.4 类型转换显式类型转换显式类型转换指的是使用强制类型转换运算符,将一个变量或表达式转化成所需的类型,其基本语法格式如下所示:(类型名)(表达式)2.3.4 类型转换在进行类型转换时,如果由低字节数据类型向高字节数据类型转换,一般不会出现错误,但如果是高字节数据类型向低字节数据类型转换,则可能会因数据截断造成精读丢失。注 意2.3.4 类型转换(1)浮点型与整型的转换浮点型整型:舍弃浮点数的小数部分,只保留整数部分;整型浮点型:数值不变,只将形式改为浮点形式,小数点后扩充0。需要注意的是,赋值时的类型转换实际上是隐式的。(2)单双精度浮点型的转换float类型

22、转换为double类型时,需要在尾部加0以进行扩充;double类型转换为float类型时,会造成精度丢失。2.3.4 类型转换(3)char类型与int类型的转换intchar:只保留其最低8位,高位部分舍弃;charint:根据不同的编译系统高级作不同的处理。(4)int类型与long类型的转换intlong:外部值保持不变,而内部形式有所改变;longint:将低16位值赋给int型变量,而将高16 位截断舍弃(这里假定int型占两个字节)。2.3.4 类型转换(5)无符号整数之间的转换将一个unsigned型数据赋给一个长度相同的整型变量时(如:unsignedint、unsigned

23、 longlong,unsigned shortshort),内部的存储方式不变,但外部值却可能改变。将一个非unsigned整型数据赋给一个长度相同的unsigned型变量时, 内部存储形式不变,但外部表示时总是无符号的。2.4.1 运算符与表达式的概念运算符:专门用于告诉程序执行特定运算或逻辑操作的符号。 算术运算符:用于处理四则运算 关系运算符:用于表达式的比较,并返回一个真值或假值 逻辑运算符:用于根据表达式的值返回真值或假值 赋值运算符:用于将表达式的值赋给变量 条件运算符:用于处理条件判断 位运算符:用于处理数据的位运算 sizeof运算符:用于求字节数长度2.4.1 运算符与表达

24、式的概念表达式:使用运算符将操作数连接而成的式子称为表达式。(1)常量和变量都是表达式,例如,常量3.14、变量i。(2)运算符的类型对应表达式的类型,例如,算术运算符对应算术表达式。(3)每一个表达式都有自己的值,即表达式都有运算结果。2.4.2 算术运算符与算术表达式算术运算符用于处理算术运算,它与数学中的算术运算符作用是一样的,但其组成与数学中的算术运算符稍有不同。使用算术运算符连接起来的式子称为算术表达式。2.4.2 算术运算符与算术表达式算术运算符运算符运算范例结果+正号+33-负号b=4;-b;-4+加5+510-减6-42*乘3*412/除5/51% 取模7%52+ 自增(前)a

25、=2;b=+a;a=3;b=3;+ 自增(后)a=2;b=a+;a=3;b=2;- 自减(前)a=2;b=-a;a=1;b=1;- 自减(后)a=2;b=a-;a=1;b=2;2.4.2 算术运算符与算术表达式(1)算术运算符遵循“先乘除后加减”原则。(2)自增自减运算符放数据前后,作用顺序不同。(3)整数与浮点数相除会进行隐式转换。(4)取模运算,结果取决于被模数。注 意多学一招:运算符的结合性运算符的结合性指同一优先级的运算符在表达式中操作的结合方向,即当一个运算对象两侧运算符的优先级别相同时, 运算对象与运算符的结合顺序。大多数运算符结合方向是“自左至右”。2.4.3 关系运算符与关系表

26、达式关系运算符用于对两个数据进行比较,其结果是一个逻辑值(“真”或“假”),如“53”,其值为“真”。C语言的比较运算中,“真”用非“0”数字来表示,“假”用数字“0”来表示。使用关系运算符连接起来的式子称为关系表达式。关系运算符运算符运算范例结果=相等于4 = 30!=不等于4 != 31小于4 大于4 31=小于等于4 =大于等于4 = 312.4.3 关系运算符与关系表达式在使用比较运算符时,不能将比较运算符“=”误写成赋值运算符“=”。注 意2.4.3 关系运算符与关系表达式2.4.4 逻辑运算符与逻辑表达式逻辑运算符用于判断复合条件的真假,其结果仍为“真”或“假”。使用逻辑运算符连接

27、起来的表达式称为逻辑表达式。逻辑运算符运算符运算范例结果!非!a如果a为假,则!a为真如果a为真,则!a为假&与a&b如果a和b都为真,则结果为真否则为假|或a | b如果a和b有一个或一个以上为真,则结果为真,二者都为假,结果为假2.4.4 逻辑运算符与逻辑表达式注 意逻辑运算符短路:(1)在使用“&”运算符时,如果“&”运算符左边的值为假,则右边的表达式就不再进行运算,整个表达式的结果为假。(2)在使用“|”运算符时,如果“|”运算符左边的值为真,则右边的表达式就不再进行运算,整个表达式的结果为真。2.4.4 逻辑运算符与逻辑表达式2.4.5 赋值运算符与赋值表达式赋值运算符的作用是将常量

28、、变量或表达式的值赋给某一个变量。使用赋值运算符连接起来的表达式称为赋值表达式。赋值运算符2.4.5 赋值运算符与赋值表达式运算符运算范例结果=赋值a=3;b=2;a=3;b=2;+=加等于a=3;b=2;a+=b;a=5;b=2;-=减等于a=3;b=2;a-=b;a=1;b=2;*=乘等于a=3;b=2;a*=b;a=6;b=2;/=除等于a=3;b=2;a/=b;a=1;b=2;%=模等于a=3;b=2;a%=b;a=1;b=2;2.4.5 赋值运算符与赋值表达式(1)在C语言中可以通过一条赋值语句对多个变量进行赋值。int x,y,z; x=y=z=5; /正确int x=y=z=5;

29、 /错误(2)除了“=”,其他都是特殊的赋值运算符。x+=3; /等同于x=x+3;2.4.6 条件运算符与表达式条件运算符用于条件判断,符号由?:组成,其语法如下:表达式1 ? 表达式2 : 表达式3在条件表达式中,先计算表达式1,若其值为真(非0)则将表达式2的值作为整个表达式的取值,否则(表达式1的值为0)将表达式3的值作为整个条件表达式的取值。2.4.6 条件运算符与表达式注 意(1)条件运算符是三目运算符。(2)条件运算符“?”和“:”是一对运算符,不能分开单独使用。(3)条件运算符的优先级低于关系运算符与算术运算符,但高于赋值运算符。(4)条件运算符的结合方向自右向左。2.4.7

30、位运算符位运算符是针对二进制数的每一位进行运算的符号,它是专门针对数字0和1进行操作的。位运算符2.4.7 位运算符运算符运算范例结果&按位与0 & 000 & 101 & 111 & 00|按位或0 | 000 | 111 | 111 | 01取反0110按位异或0 000 111 101 01左移0000001020000100010010011右移01100010200011000111000102111110002.4.8 sizeof运算符sizeof运算符用于获取某一数据或数据类型在内存中所占的字节数。sizeof(数据类型名称) 或 sizeof(变量名称)2.5 运算符优先级在对一些比较复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,我们把这种顺序称作运算符的优先级。运算符优先级2.5 运算符优先级优先级运算符1. ()2

温馨提示

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

评论

0/150

提交评论