大学计算机C语言.ppt

上传人:tia****nde 文档编号:14150021 上传时间:2020-07-08 格式:PPT 页数:46 大小:603KB
返回 下载 相关 举报
大学计算机C语言.ppt_第1页
第1页 / 共46页
大学计算机C语言.ppt_第2页
第2页 / 共46页
大学计算机C语言.ppt_第3页
第3页 / 共46页
点击查看更多>>
资源描述
数据类型与表达式,第2章,本 章 内 容,1. C语言的数据类型 2. 常量和变量 3. 整型数据 4. 实型数据 5. 字符型数据 6. 系统函数 7. C运算符概述 8. 算术运算符 9. 关系运算符和逻辑运算符 10. 位运算符与长度运算符 11. 赋值运算符和赋值表达式 12. 逗号运算符和逗号表达式 13. 运算符的优先级与表达式的分类,2.1 C语言的数据类型,数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 数据类型明显或隐含地规定了在程序执行期间变量或表达式所有可能的取值范围,以及在这些值上允许进行的操作。 C语言的各种数据类型:,2.2 常量和变量,常量和符号常量 1常量 在程序运行过程中,其值不能被改变的量称为常量,又叫常数。 常量区分为不同的类型,如100,0,-8为整型常量,25.32,0.142为实型常量,A,B是字符型常量。 常量不需要事先定义,只在程序中需要的地方直接写出即可。常量的类型也不需要事先说明,它们的类型是由书写方式自动默认的。 2符号常量 用一个符号(标识符)代表一个常量,例如: #define MAXNUM 1000 #define TRUE 1 #define FALSE 0 符号常量的定义格式如下: #define 符号常量 常量,2.2 常量和变量,标识符与变量 1标识符 在C 语言中,标识符是对变量、符号常量、函数、数组、文件等用户定义对象的命名。 标识符可以是一个或多个字符。标识符的第一个字符必须是英文字母或下画线,随后的字符必须是字母、数字或下画线。不能以数字打头。 下面是一些正确或错误标识符命名的示例。 正确标识符 错误标识符 weight 2x length a|#b color2 red!color save _$123,2.2 常量和变量,2变量 在程序运行过程中,其值可以改变的量称为变量。 在C语言中,要求对所有用到的变量 “先定义,后使用”。 例如:定义两个整型变量a、b和三个实型变量x、y、z。 int a,b; float x,y,z; C语言有五种基本数据类型:字符型、整型、实型、双精度实型、 和空类型。定义这五种类型的变量时须使用的类型说明符分别为 char、int、float、double和void。,2.3 整型数据,整型常量 1不同进制数的使用 十进制整数的表示与通常在算术中的表示一样,例如:321,+321。 八进制整数必须以数字0开头,例如:0123表示(123)8。 十六进制整数必须以0 x开头,例如0 x123 表示(123)16。,2.3 整型数据,整型变量 1整型数据在内存中的存放形式 在计算机中,数是用二进制表示的,把一个数连同其符号在计算机中加以数值化,这样的数称为机器数,机器数可以用不同的码制(原码、补码)表示。 2整型变量的分类 根据数值的范围将整型变量分为以下六种类型: 有符号基本整型:signed int。 有符号短整型:signed short int。 有符号长整型:signed long int。 无符号基本整型:unsigned int。 无符号短整型:unsigned short int。 无符号长整型:unsigned long int。,2.3 整型数据,ANSI标准定义的整数类型,2.3 整型数据,3.不同类型的整型常量赋值给整形变量 整型变量可分为int、short int、long int、unsigned int、unsigned short、unsigned long等类别,将整型常量赋值给上述类别的整型变量时如何做到类型匹配? 一个整型常数,若值在-32768+32767范围内,可将它赋值给int型和long int型变量。 一个整型常数,若值在-2147483648+2147483647范围内,可以赋值给一个long int型变量。 常量无unsigned型。但一个非负值的整数可以赋值给unsigned int型变量,只要它的范围在065535范围内。 在一个整常数后面加一个小写字母l或大写字母L,则认为是long型常量。例如,-123l、123L、0L、0775L、0 x9EL等。,2.3 整型数据,3. 整型变量的定义 对变量的定义,一般是放在一个函数的开头的声明部分。 【例2-1】 main() int a; unsigned int b; long c; unsigned long d; a=-100; b=60000; c=-2123456789; d=4123456789; printf(a=%d,b=%u,c=%ld,d=%lu,a,b,c,d); 运行结果为 a=-100,b=60000,c=-2123456789,d=4123456789,2.4 实型数据,实型常量的表示方法 实型常数也称为浮点数,在C语言中实型常数只使用十进制数表示,它的书写方式有两种: 小数形式。它是由整数、小数点、小数三部分组成,最多只能省略其中的整数或小数部分,但不能二者都省略,也不能省略小数点。例如:123.,-.123,1.23,-1.23,12.0,0.,.0,0.0都是合法的十进制小数形式。 指数形式。它是由尾数、字母e或E、指数三部分组成。尾数可以是一个十进制小数形式,也可以是一个整数形式, 如123e-3或123E-3都代表12310-3的值。 注意:字母e(或E)之前必须有数字,且后面指数必须为整数,如-0.32E-2,2E4,-.23E-2,.0E3,0.E-5,0E0等都是合法的指数形式,而E-5,.E2,12.3E5.4却是非法的指数形式。,2.4 实型数据,实型变量 1实型数据在内存中的存放形式 实型数据是按指数形式存储的。系统把一个实型数据分成尾数部分和指数部分分别存放。实型数据在内存中小数点位置不是固定的,或者说是浮动的,故这种表示法称为浮点表示法。 2实型变量的定义 对每一个实型变量都应在使用前加以定义。如 float x,y; 3实型数据的舍入误差 由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的。在有效范围以外的数字将被舍去。由此可能会产生一些误差。请分析下面的程序:,【例2-3】分析实型数据的舍入误差。 main() float a; a=12345.6789; printf(n%f,a); printf(n%e,a); 在Turbo C中程序运行结果为: 12345.678711 1.234568e+002,2.4 实型数据,双精度型数据 1双精度常数 双精度常数的书写方式与实型常数的书写方式相同,有十进制小数形式和指数形式两种,比实型数据的范围广、精度高。 2双精度数据在内存中的表示形式 ANSI并未具体规定每种类型数据的长度、精度和数值范围。 微机上常用的C编译系统(如Turbo C、MS C、Borland C)实型数据: 3双精度变量的定义 双精度类型标识符double前还可加修饰符long,long double 比double型的精度更高,表示的数值范围更大。,2.5 字符型数据,字符常量 字符常量是用单引号()括起来的单个字符。例如A、!、#、a、* 等。 除字符常量外,将“”开头的特定字符串称为“转义字符”,意思是将反斜杠后面的字符串转换成另外的意义。,2.5 字符型数据,【例2-4】下面程序中使用了几种转义字符。 main() printf(abxbcdtefghtijkln); printf(xxxxxxxxrmnoptqrstuvwxn); ,程序运行时在显示屏上得到以下结果: abcd efgh ijkl mnopqrst uvwx,2.5 字符型数据,字符变量 字符变量用来存放字符常量,一个字符变量只能放一个字符。 字符变量的定义形式: char 变量名表列; 例如: char c1,c2; c1=A; c2=B; C语言编译系统规定用一个字节来存放一个字符,将一个字符常量赋值给一个变量,实际上是将该字符的ASCII代码放到存储单元中。,【例2-5】将字符数据以不同的方式输出。 main() char c1,c2; c1=A; c2=B; printf(%c,%cn,c1,c2); printf(%d,%d,c1,c2); ,A,B 65,66,【例2-6】大小写字母的转换。 main() char c1,c2,c3,c4; c1=A; c2=B; c3=c1+32; c4=c2+32; printf(%c,%c,c3,c4); ,a,b,2.5 字符型数据,字符串常量 定义:字符串就是用两个双引号(“)括起来的若干个字符。 例如,China、88383872、AJ200 存储:每个字符串尾自动加一个 0 作为字符串结束标志 例如:字 符串“CHINA”在内存中 字符串的长度:字符串中所有字符的个数,其中每个转义字符当作一个字符。 例如,字符串“China”,、ABCD、“101102x43x44”的长度分别为5、4、6、4。 字符常量与字符串常量不同,没有字符串变量,用字符数组存放,2.6 系统函数,简例 【例2-7】假设根据自变量x不同的值求下式的值: x7+sinx-log10(x+3) 在C语言中可使用以下程序: #include main() float x,y; scanf(%f, ,2.6 系统函数,函数:是可以被调用的一段程序。 库函数:软件开发商编写了很多标准函数,作为运算符的补充,供用户调用,称之为库函数或系统函数。 库函数存储在扩展名为.lib的文件中。 按库函数类划分为:数学函数、字符函数、字符串函数、输入输出函数、动态存储分配函数等。其声明分别包含在math.h、ctype.h、string.h、stdio.h和stdlib.h等文件中。如果程序需要调用这些库函数,就要在源程序文件中使用文件包含命令: #include 或 #include文件名 输入输出函数scanf()和printf()也是库函数,称为标准输入输出函数,它们的声明包含在文件stdio.h中。由于Turbo C允许使用标准输入输出函数的时候省略头文件,所以上述例子中我们未使用#include。,常用数学函数,2.7 C运算符概述,C的运算符有以下几种: 算术运算符:(+、-、*、/、%),自加自减运算符(+、-)。 类型转换运算符((类型符))。 关系运算符(、=、=、!=)。 逻辑运算符(!、 j=i+; k=+i; printf(%d,%d,%d,i,j,k);,2.8 算术运算符,说明: +和-运算符只能用于变量,不能用于常量或表达式。 分析:(a + b)+ ? +和-的结合方向是自右至左。 例如:-x+ 相当于-(x+),2.8 算术运算符,类型转换运算符及类型转换 类型转换运算符 一般形式:(类型名)(表达式) 例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变,2.8 算术运算符,类型转换 当表达式中出现不同类型的操作数时,要按一定的规则将其转换为相同的类型。遵循以下转换规则: 【例2-8】设a是整型变量,其值为2,c是字符变量,其值为A,x是实型变量,其值为1.5,则表达式: x+c*a/10-3/2,横向朝左的箭头表示必定的转换。 纵向箭头表示当运算对象为不同类型时转换的方向。低级类型转换为高级类型。 转换是由系统自动进行。,2.9 关系运算符和逻辑运算符,关系运算符,2.9 关系运算符和逻辑运算符,在比较时注意以下规则: 如果两个操作数是数值型,则按其大小比较。 如果两个操作数是字符型,则按字符的ASCII码值进行比较,即ASCII码值大的字符大。 表中前四种运算符优先级相同,后两种优先级相同。前四种的优先级高于后两种。关系运算符具有自左至右的结合性。 关系运算符的优先级低于算术运算符。 例 当a的值为2时,一个表达式的运算次序及结果如图2-2所示。,2.9 关系运算符和逻辑运算符,逻辑运算符 C语言中提供了三种逻辑运算符: 单目逻辑运算符:!(逻辑“非”)。 双目逻辑运算符: scanf(%c, ,2.10 位运算符与长度运算符,原码、反码和补码 当真值 x=+xn-2xn-3x0时,它的原码、反码和补码完全相同, x原=x反=x补=0 xn-2xn-3x0 当真值x=-xn-2xn-3x0时,它的原码、反码和补码与x的关系: 其中 表示xi取反,即,n位,2.10 位运算符与长度运算符,【例2-10】假设某计算机的字长为16位,试写出二进制数+100010和-100010的原码、反码和补码。 解:x=+000000000100010 y=-000000000100010 x对应的机器数如下:x原=x反=x补=0000000000100010 真值y为负,则有 y原=1000000000100010 y反=1111111111011101 y补=1111111111011110 【例2-11】已知x补=1111111111110010,求真值x。 解:由x补求出x反,则得 x反=1111111111110010-1=1111111111110001 x原=1000000000001110 x原对应的符号位为1,故其对应的真值为负,且数值位与原码各位相同,即有 x=(-000000000001110)2=14,2.10 位运算符与长度运算符,移位运算符 1左移位运算符 e1n 例如: x=-32767,手工计算x2的步骤如下: 第一步:x原=1111111111111111 第二步:x反=1000000000000000 第三步:x补=1000000000000001 第四步:将x补左移位两次得 0000000000000100 第五步:将上式看作结果数所对应的补码,求原码。由于符号位为0,其原码还等于补码。 第六步:由原码得到真值为4,这正是x2的运算结果。 一般来说,一个整数左移一位,其结果相当于这个整数乘以2(数值溢出时例外)。 例如: -21 的值为-4。,2.10 位运算符与长度运算符,2右移位运算符 e1n 注意: 对无符号数,右移时,左边高位移入0。 对于有符号的值,如果原来符号位为0(该数为正),则左边也是移入0;如果符号位原来为1(该数为负),则左边移入0还是1,要取决于所用的计算机系统。有的系统移入0,有的系统移入1。Turbo C及多数C编译系统是移入1,即保持数的正负性不变。 一般来说,一个整数右移1位,其结果相当于这个整数除以2。 例如: 142,相当于14连续两次除以2并取整,即其值为3。,2.10 位运算符与长度运算符,位逻辑运算符 1按位取反运算符 以int型数据为例,若a的值为2,则 a补=0000000000000010 按位取反得 1111111111111101 上式对应的原码为 1000000000000011 从而知(a)的值为-3。 2按位与运算符,2.13 运算符的优先级与表达式的分类,2.13 运算符的优先级与表达式的分类,C表达式的分类 1按运算符分类 表达式:用运算符将若干常数、变量和函数连接起来的有意义的式子。 前面各节是根据运算符的不同来划分表达式类型的,如算术表达式、赋值表达式、逗号表达式等。 如果表达式中有多种不同的运算符,则要按照运算次序,依据最后一次进行运算的运算符来决定是什么类型。 例如: (xy)+(4|5)是算术表达式 xy+4|5 是逻辑表达式。 2按值分类 表达式的值:每个表达式都可以按照其中运算符的优先级别和运算规则依次对运算对象进行运算,最终获得一个数据,该数据称为表达式的值。 表达式值的数据类型就称为表达式的数据类型。由于表达式的计算结果可能是整型、实型和逻辑型,而在C语言中逻辑型数据是用整数来表示的,所以C语言的表达式类型实际上只分为整型和实型。,作 业,习题二: 一、二、三,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!