c程序设计第三章.ppt
《c程序设计第三章.ppt》由会员分享,可在线阅读,更多相关《c程序设计第三章.ppt(43页珍藏版)》请在三一文库上搜索。
1、第3章 数据类型、运算符与表达式,教学目的与要求: 1熟练掌握C的基本数据类型 2掌握C语言的运算符,熟练掌握基本的运 算符,掌握运算符的优先级及结合方向 3了解C语言的各种表达式,掌握常用的几种表达式,一、C的数据类型 二、运算符和表达式 三、本章小结,基本内容,结束,(一)数据类型概述 (二)常量与变量 (三)整型数据 (四)实型数据 (五)字符型数据 (六)各类数值型数据间的混合运算,返回,C的数据类型,(一)C的数据类型 C 语言的数据结构是以数据类型形式出现的。C的数据类型如下:,返回,(二)常量与变量 1. 常量和符号常量 常量:在程序运行过程中,其值不能被改变的量。 常量区分为不
2、同的类型:如:整型常量(12、-3)、实型常量(4.6、 -1.23)、字符常量(a、d)。 符号常量:用一个标识符代表一个常量,即标识符形式的常量。 例 3.1 符号常量的使用。 #define PRICE 30 main( ) int num ,total; num = 10; total = num * PRICE; printf(“total = %d”,total); ,(1)程序中用#define命令行定义PRICE为30,此后凡在本文件中出现的PRICE都代表30,可以和常量一样进行运算。 (2)符号常量不同于变量,它的值在其作用域内不能改变,也不能再被赋值。如在本例中再用以下赋
3、值语句给PRICE赋值是错误的: PRICE = 40; (3) 习惯上,符号常量名用大写,变量名用小写,以示区别。,上述程序的说明如下:,使用符号常量的好处:,(1)含义清楚。如:sum=15*30*23.5*43;在检查程序时搞不清各个常数究竟代表什么。应尽量使用“见名知意”的变量名和符号常量。 (2)在需要改变一个常量时能做到“一改全改”。 如: #define PRICE 35 在程序中所有以PRICE代表的价格就会一律自动全改为35。,2. 变 量 变量:其值可以改变的量。 一个变量应该有一个名字,在内存中占据一定的存储单元。在该存储单元中存放变量的值。,见右图:变量名实际上是一个符
4、号地址,在对程序编译连接时由系统给每一个变量名分配一个内存地址。在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。,注:区分变量名和变量值这两个不同的概念。,3. 标识符: 用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。,C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或下划线。下面列出的是合法的标识符,也是合法的变量名: Sum,average,_total,tan,lotus_1,BASIC,li_ling 不合法的标识符和变量名如右:M.D.John,#33,3D64,ab,(1)大写字母
5、和小写字母被认为是两个不同的字符。 (2)变量名的长度不要超过8个字符。Turbo C允许32个字符。 (3)所有用到的变量名都要“先定义,后使用”,特别指出每一个变量各自属于什么类型。,对于变量现说明如下:,返回,(三)整型数据 1. 整型常量的表示方法 整型常量即整常数。C整常数可用以下三种形式表示: (1)十进制整数。如123,-456,0。 (2)八进制整数。以0开头的数是八进制数。如:0123表示八进制数123,即(123)8,其值为:182 28 1 380 ,等于十进制数83。 (3)十六进制整数。以0x或0X开头的数是十六进制数。 如:0x123,代表十六进制数123,2. 整
6、型变量 (1)整型数据在内存中的存放形式 数据在内存中是以二进制形式存放的。如果定义了一个整型变量i: int i; /* 定义为整型变量 */ i=10; /* 给i 赋以整数10 */ 十进制数10的二进制形式为1010,在C编译系统中,每一个整型变量在内存中占2个字节。如下所示:,实际上,数值是以补码(complement)表示的。一个正数的补码和其原码的形式相同。下图就是用补码形式表示的。如果数值是负的,在内存中如何用补码形式表示呢?求负数补码的方法是:将该数的绝对值的二进制形式,按位取反再加1。 例如:求-10的补码:,(2)整型变量的分类 可以根据数值的范围将变量定义为基本整型、短
7、整型或长整型。因此有以下三类整型变量: 基本整型,以int表示。 短整型,以short int表示,或以short表示。 长整型,以long int表示,或以long表示。,归纳起来,有以下6种整型变量。即: 取值范围 字节数 有符号基本整型 signed int -3276832767 2 无符号基本整型 unsigned int 065535 2 有符号短整型 signed short int -3276832767 2 无符号短整型 unsigned short int 065535 2 有符号长整型 signed long int -21474836482147483647 4 无符号
8、长整型 unsigned long int 04294967295 4,如果不指定unsigned或指定signed,则存储单元中最高位代表符号(0为正,1为负)。如果指定unsigned,为无符号型,存储单元中全部二进制位(bit)用作存放数本身,而不包括符号。无符号型变量只能存放不带符号的整数,如123、4687等,而不能存放负数。,如果在程序中定义a和b两个变量: int a; unsigned int b; 则变量a的数值范围为-3276832767。而变量b的数值范围为065535。,(3)整型变量的定义 对变量的定义,一般是放在一个函数的声明部分。,例3.2:整型变量的定义与使用:
9、 main ( ) int a,b,c,d; /*指定a、b、c、d为整型变量 */ unsigned u; /* 指定u为无符号整型变量 */ a=12; b=-24; u=10; c= a+u ;d=b+u; printf(“a+u = %d,b+u = %dn”,c,d); 运行结果为:a+u = 22 ; b+u = -14 可以看到不同种类的整型数据可以进行算术运算。,(4)整型数据的溢出 一个int型变量的最大值允许值为32767,如果再加1,会出现什么情况?,例 3.3 整型数据的溢出。 main ( ) int a, b; a = 32767; b = a + 1; 运行结果为
10、: 32767,-32768 printf ( “%d, %d”,a,b); ,从上图可以看到:变量a的最高为0,后15位全为1。加1后变成第1位为1,后面15位全为0。而它是-32768的补码形式,所以输出变量b的值为-32768。,注:一个int变量只能容纳-3276832767范围内的数,无法表示大于32767的数。遇此情况就发生“溢出”,但运行时并不报错。它好像汽车的里程表一样,达到最大值以后,又从最小值开始计数。所以,32767加1得不到32768,而得到 -32768,这与程序编制者的原意不同。因此,在操作时要特别注意,或将变量b改成long 型就可得到预期的结果32768。,3.
11、 整型常量的类型 我们已知整型变量可分为int、short int、long int和unsigned int、unsigned short、unsigned long等类别。那么常量是否也有这些类别?在将一个整型常量赋值给上述几种类别的整型变量时如何做到类型匹配?请注意以下几点:,(1)一个整数,如果其值在-3276832767范围内,认为它是int型,它可以赋值给int型和long int 型变量。 (2)一个整数,如果其值超过了上述范围,而在-2147483648 2147483647范围内,则认为它是长整型,可以将它赋值给一个long int 型变量。 (3)一个int 型的常量也同时
12、是一个short int 型常量,可以赋给int 型或short int 型变量。 (4)一个整常量后面加一个字母u,认为是unsigned int 型,如12345u,在内存中按unsigned int规定的方式存放。 (5)在一个整常量后面加一个字母l或L,则认为是long int 型变量。,返回,(四)实型数据 1. 实型常量的表示方法 实数(real number )又称浮点数(floating-point number)。实数有两种表示形式:,(1)十进制小数形式。它由数字和小数点组成(注意必须有小数点)。如:123.0 、.123。 (2)指数形式。注意字母e之前必须有数字,且e后
13、面的指数必须为整数。如:123e3代表123103 。 “规范化的指数形式”:即在字母e之前的小数部分,小数点左边应有一位(且只能有一位)非零的数字。一个实数在用指数形式输出时,是按规范化的指数形式输出的。,2. 实型变量,(1)实型数据在内存中的存放形式 常用的微机系统中一个实型数据在内存占4个字节(32位)。与整型数据的存储方式不同,实型数据是按照指数形式存储的。,(2)实型变量的分类 实型变量分为单精度(float型)、双精度(double型)和长双精度型(long double)三类。见下表:,(3)实型数据的舍入误差 由于实型变量是用有限的存储单元存储的,因此能提供的有效数字总是有限
14、的,在有效位以外的数字将被舍去。由此可能会产生一些误差。,许多C编译系统将实型常量作为双精度来处理,可以将一个实型常量可以赋给一个float型、double型或long double变量。 如: float a; a = 111111.111; 由于float型变量只能接收7位有效数字,因此后两位小数不起作用。若a改为double型,则能全部接收。若将实型常量赋给float型变量,其运算速度慢,为提高速度,可在常量后加上f或F。,3. 实型常量的类型,返回,(五)字符型数据 1. 字符常量 C的字符常量是用单引号括起来的一个单字符,如a 。 除了以上形式的字符常量外,还有一个以“”开头的特殊的
15、字符常量(称为转义字符)。常见的有:,注意:在显示屏上最后得到的结果与上述打印结果不同。,例 3.4 转义字符的使用。 main( ) printf( “ ab c t de rftgn ” ); printf( “ htibbj k ” ); ,2. 字符变量 字符型变量用来存放字符常量。 注:一个字符变量只能放一个字符。一个字符变量在内存中占一个字节例如:char c1,c2; c1=a; c2=b;,3. 字符数据在内存中的存储形式及其使用方法 将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中。,例如:字符a的A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 第三
链接地址:https://www.31doc.com/p-3479311.html