资源预览内容
第1页 / 共95页
第2页 / 共95页
第3页 / 共95页
第4页 / 共95页
第5页 / 共95页
第6页 / 共95页
第7页 / 共95页
第8页 / 共95页
第9页 / 共95页
第10页 / 共95页
亲,该文档总共95页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第2章,基本数据类型和运算符及表达式,第2页,主要内容,常量与变量 整型数据 实型数据 字符型数据 运算符和表达式 数据类型的转换 程序案例 小结,第3页,2-1 常量与变量,常量和符号常量 变量,第4页,常量,所谓常量,是指在程序运行过程中其值保持不变的量。如程序中的具体数字、字符等。常量被区分为不同的类型。,第5页,符号常量,用一个标识符代表一个常量,称为符号常量,即标识符形式的常量。,第6页,2-1-2 变量,变量的概念 变量的定义 变量的初始化,第7页,变量的概念,C语言中的变量是指在一个程序运行过程中,其值能被改变的量。 一个变量应该有一个名字作为标识,变量名的命名规则也就是相关标识符的命名规则。,第8页,变量的定义,在C语言中,所有变量必须在使用之前给予说明。也就是“先定义,后使用”,说明主要是指出变量的类型。 变量定义的一般格式为: 数据类型标识符 变量名1,变量名2,变量名n;,第9页,变量的存储,第10页,变量的初始化,在定义变量时同时初始化变量 int a=8; /*指定a为整型变量,初值为8*/ float f=8.24; /*指定f为实型变量,初值为8.24*/ char c=a; /*指定c为字符型变量,初值为a*/ 给被定义变量的部分赋初值 int a,b,c=-6; 它表示指定a、b、c均为整型变量,而只对c进行初始化,且c的初值为-6。,第11页,变量的初始化,对几个变量赋给同一个初值 若对几个变量赋同一个初值,不能写成: int a=b=c=6; 而应写成: int a=6,b=6,c=6; 初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋给初值的,相当于有一个赋值语句。,第12页,2-2 整型数据,整型常量 整型变量,第13页,2-2-1 整型常量,十进制的整型常量:十进制数允许出现的数字是0-9共10个阿拉伯数字,并以非0数字开头。如456、-789、0等。 八进制的整型常量:以0开头的整型常量是八进制整型常量。 十六进制的整型常量:以0x开头的整型常量是十六进制整型常量。,第14页,2-2-2 整型变量,整型变量的分类 整型数据在内存中的存放形式 整型变量的定义 整型数据的溢出,第15页,整型变量的分类,基本整型,以int表示。 短整型,以short int表示,或以short表示。 长整型,以long int表示,或以long表示。,第16页,整型变量的表示方法,第17页,C语言整型变量数值的表示范围,第18页,整型数据在内存中的存放形式,数据在内存中是以二进制形式存放的。如果定义了一个整型变量i,系统就给变量i分配相应的存储单元。,第19页,整型变量的定义,定义变量一般要在程序块的首部进行,以免在编译中出现变量未定义的错误。变量定义的位置决定了被定义变量的作用域,这一概念将在以后介绍。 描述数据类型的关键字与被定义的变量之间至少要有一个以上的空格隔开,这样做的目的一是便于阅读程序,二是便于编译系统识别。 多个变量是同一数据类型时,可以用一个数据类型的关键字进行定义,但必须注意,变量间要用逗号隔开,结尾要用分号结束。 变量可以以任意顺序进行定义,不必与它们在代码块中出现的顺序相对应。 在定义short int型、long int 型和unsigned int 型变量时,可以只用short,long和unsigned进行定义。,第20页,整型变量的定义,一个整型常量,其值在-32 76832 767范围内,认为它是int型,它可以赋值给int型和short int型变量。 一个整型常量,其值若超过了上述范围,在-2 147 483 6482 147 483 647范围之内,则认为它是long int 型,可以将它赋值给一个long int 型变量。 如果C语言版本(如Turbo C)确定short int 与int 型数据在内存中占据的长度相同,则它的表数范围与int 型相同。因此,一个int型的常量也同时是一个short int 型常量,可以赋值给int 型或short int 型变量。 常量中无unsigned类型。但一个非负值的整型常量可以赋值给unsigned型的整型变量,只要它的范围不超过变量数值的表示范围即可。 在一个整型常量后面加一个字母l 或L,则认为是long int 型常量。,第21页,整型数据的溢出,第22页,2-3 实型数据,实型常量 实型变量,第23页,2-3-1 实型常量,实型常量的形式 实型常量的类型,第24页,实型常量的形式,十进制数形式 由数字09和小数点组成(注意,必须有小数点)。如3.14159、0.123、.321、21.0、0.0等。 注意:在用十进制数书写实型常量时,必须包含小数点,小数点的两边不一定要求都有数字,例如,21.0可以写成21.;而0.123可以写成.123。,第25页,实型常量的形式,指数形式 实型常量的指数形式类似于数学中的指数表示法,就是把其10的多少次幂中的10用E(e)代替。一般格式为: 尾数E(e)整数指数 如5.11027,7.21023。在C语言程序中表示为:5.1e-27,7.2e23或7.2e+23。 注意:在用指数形式书写实型常量时,e(或E)的前面和后面必须有数字,且e后面的指数必须为整数,而尾数可以是整数也可以是小数。例如,.0e0、1E0、0e5合法,而e3、2.1e3.5、.e3、e等都不是合法的指数形式。,第26页,实型常量的类型,许多编译系统将实型常量作为双精度来处理。例如,已定义一个实型变量f,有如下语句: f=3.86435*6620.87 系统将3.86435和6620.87按双精度数据存储(占64位)和运算,得到一个双精度的乘积,然后取前16位赋给实型变量f。这样做可以保证计算结果更精确,但是运算速度降低了。若在数的后面加字母f或F(如1.65f、654.87F),这样编译系统就会按单精度(32位)处理。,第27页,实型常量的类型,一个实型常量可以赋给一个float型、double型或long double型变量。根据变量的类型截取实型常量中相应的有效位数字。,第28页,2-3-2 实型变量,实型变量的分类 实型变量的定义 实型数据在内存中的存放形式 实型数据的误差,第29页,实型变量的分类,实型变量分为单精度(float型)、双精度(double型)和长双精度(long double型)3类。,第30页,实型变量,第31页,实型变量的定义,使用单精度型变量之前,必须在程序块的首部对其进行定义。定义单精度型变量的关键字是float。 定义i为长双精度实数。C编译系统将为其分配8个字节(128bit)的存储空间。,第32页,实型数据在内存中的存放形式,第33页,实型数据在内存中的存放形式,第34页,实型数据的误差,由于实型变量是用有限的存储单元存储的,因此,能提供的有效数字总是有限的,在有效位以外的数字将被舍去。由此可能会产生一些误差。,第35页,2-4 字符型数据,字符常量 转义序列 字符串常量 符号常量 字符型变量 字符数据在内存中的存放形式及其使用方法,第36页,2-4-1 字符常量,C语言中字符型常量是由一对单引号括起来的单个字符构成。例如:x,y,7,%,;等都是有效的字符型常量。,第37页,2-4-2 转义序列,除了以上介绍的字符常量之外,C语言还允许用一种特殊形式的字符常量,就是以一个“”开头的字符序列。,第38页,转义序列,第39页,2-4-3 字符串常量,C语言中除了允许使用字符型常量外,还允许使用字符串常量。字符串常量是用一对双引号括起来的字符序列。,第40页,2-4-4 符号常量,C语言中,常量可以用符号代替,代替常量的符号称之为符号常量。为了便于与一般标识符、变量名相区别,符号常量一般用大写英文字母序列构成,符号常量在使用之前必须预先进行定义。 其定义的一般格式是: #define 符号常量名 常量,第41页,2-4-4 符号常量,使用符号常量增强了程序的可读性。 使程序易于修改。,第42页,2-4-5 字符型变量,字符型变量是用来存放字符常量的,在一个字符变量中只能放一个字符,而不能存放一个字符串(包括若干字符)。 字符型变量和整型变量一样也需要先定义,其定义应该在程序块的首部,其关键字是“char”。 字符型变量的定义形式如下: char c1,c2;或char c1; char c2;,第43页,2-4-6 字符数据在内存中的存放形式及其使用方法,字符常量在内存中的存放形式及使用 字符串常量在内存中的存放形式,第44页,字符常量在内存中的存放形式及使用,将一个字符常量放到一个字符型变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中。,第45页,字符常量在内存中的存放形式,第46页,字符串常量在内存中的存放形式,字符串常量在内存中存储时,系统自动在该字符串的末尾加一个“字符串结束标志”,这个结束标志就是0(ASCII码值为0的字符),也用NULL表示。它是一字节(8bit)的代码,因此,长度为n个字符的字符串常量,在内存中要占用n+1个字节的存储空间。,第47页,2-5 运算符和表达式,运算符的分类 运算符的优先级与结合性 算术运算符和算术表达式 增1、减1运算符及表达式 赋值运算符和赋值表达式 关系运算符和关系表达式 逻辑运算符和逻辑表达式 逗号运算符和逗号表达式 sizeof运算符,第48页,2-5-1 运算符的分类,圆括号运算符:( )。 算术运算符:+、-、*、%。 增1、减1运算符:+、-。 赋值运算符:=及其扩展赋值运算符。 关系运算符:、=、=、=、!=。 逻辑运算符:&、!。 逗号运算符:,。 求字节数运算符:sizeof。,第49页,2-5-1 运算符的分类,强制类型转换运算符:(类型)。 条件运算符:?、:。 下标运算符: 。 指针运算符:*、&。 分量运算符:、。 位运算符:、|、。,第50页,2-5-2 运算符的优先级与结合性,运算符的优先级 运算符的结合性,第51页,运算符的优先级,所谓运算符的优先级就是在一个表达式中运算符所具有的运算优先次序。优先级数字越大,表示优先级越高,越优先被执行。 在C语言中,运算符的优先顺序共分15个等级,最低为1,最高为15。处在同一级别的运算符,它们的优先级相同。,第52页,运算符的结合性,所谓运算符的结合性就是同一优先级的运算符的结合方向。自左至右的结合方向,称为“左结合性”;反之称为“右结合性”。 除单目运算符、赋值运算符和条件运算符是“右结合性”,即第14、3、2级。其他运算符都是“左结合性”。,第53页,2-5-3 算术运算符和算术表达式,算术运算符 算术表达式 算数运算符的优先级、结合性,第54页,算术运算符,C语言有如下5个算术运算符。 +:加法运算符,或正值运算符,如1+4,+8。 -:减法运算符,或负值运算符,如5-2,-9。 *:乘法运算符,如2*6。 /:除法运算符,如7/4。 %:模运算符,或称求余运算符,如5%3。,第55页,算术运算符,两个整数相除的结果为整数,如5/3的结果值为1,舍去小数部分。但是,如果除数或被除数中有一个为负值,则舍入的方向是不固定的。 模运算是取整数除法的余数。,第56页,算术表达式,算术运算符和操作数结合构成算术表达式。 操作数包括常量、变量、函数等。,第57页,算数运算符的优先级、结合性,算术运算符中的“*、/、%”运算符指定优先级是第13级,它们优先于优先级小于13级的各种运算符,但它们低于优先级为第15级和第14级的运算符。而运算符+、-的优先级是第12级。也就是说在一个表达式中有加、减、乘和除运算时要先进行乘、除运算,而后进行加、减运算。,第58页,2-5-4 增1、减1运算符及表达式,增1、减1运算符 增1、减1表达式,第59页,增1、减
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号