数据类型、运算符与表达式清华大学

上传人:tian****1990 文档编号:74696783 上传时间:2019-01-29 格式:PPT 页数:120 大小:1,007.50KB
返回 下载 相关 举报
数据类型、运算符与表达式清华大学_第1页
第1页 / 共120页
数据类型、运算符与表达式清华大学_第2页
第2页 / 共120页
数据类型、运算符与表达式清华大学_第3页
第3页 / 共120页
数据类型、运算符与表达式清华大学_第4页
第4页 / 共120页
数据类型、运算符与表达式清华大学_第5页
第5页 / 共120页
点击查看更多>>
资源描述

《数据类型、运算符与表达式清华大学》由会员分享,可在线阅读,更多相关《数据类型、运算符与表达式清华大学(120页珍藏版)》请在金锄头文库上搜索。

1、2.1 C的数据类型 2.2 常量与变量 2.3 整型数据 2.4 实型数据 2.5 字符型数据 2.6 变量赋初值,第2章 数据类型、运算符与表达式,2.7 各类数值型数据间的混合运算 2.8 算术运算符和算术表达式 2.9 赋值运算符和赋值表达式 2.10 逗号运算符和逗号表达式 习题,2.1 C的数据类型,一个程序应包括以下两方面内容: (1) 对数据的描述。在程序中要指定数据的类型和数据的 组织形式,即数据结构(data structure)。 (2) 对操作的描述(操作步骤),也就是算法(algorithm)。 数据是操作的对象,操作的目的是对数据进行加工处 理,以得到期望的结果。打

2、个比方,厨师做菜肴,需 要有菜谱。菜谱上一般应包括: 配料,指出应使用哪些原料; 操作步骤,指出如何使用这些原料按规定的步骤 加工成所需的菜肴。面对同一些原料可以加工出 不同风味的菜肴。,作为程序设计人员,必须认真考虑和设计数据结构和操作步骤(即算法)。因此,著名计算机科学家沃思(nikiklaus Wirth)提出一个公式数据结构+算法=程序实际上,一个程序除了以上两个主要要素之外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示。因此,可以这样表示: 程序=算法(algorithm)+数据结构(data structure) +程序设计方法 +语言工具和环境,也就是说,

3、以上4个方面是一个程序设计人员所应具备的知识。在设计一个程序时要综合运用这几方面的知识。在本书中不可能全面介绍这些内容,它们都属于有关的专门课程范畴。在这4个方面中,算法是灵魂,数据结构是加工对象,语言是工具,编程需要采用合适的方法。算法是解决“做什么”和“怎么做”的问题。程序中的操作语句,实际上就是算法的体现。算法处理的对象是数据,而数据是以某种特定的形式存在的(例如整数、实数、字符等形式)。不同的数据之间往往还存在某些联系(例如由若干个整数组成一个整数数组)。所谓数据结构指的是数据的组织形式。例如,数组就是一种数据结构。,不同的计算机语言所允许定义和使用的数据结构是不同的。例如,c语言提供

4、了“结构体”这样一种数据结构,而fortran语言就不提供这种数据结构。处理同一类问题,如果数据结构不同,算法也会不同。例如,对10个整数排序和对由10个整数构成的数组排序的算法是不同的。因此,在考虑算法时,必须注意数据结构。实际上,应当综合考虑算法和数据结构,选择最佳的数据结构和算法。 C语言的数据结构是以数据类型形式出现的。c的数据类型如下: 基本类型: 整型,字符型,实型(浮点型,包括单精度型, 双精度型),枚举类型. 构造类型: 数组类型,结构体类型,共用体类型 指针类型 空 类 型,C语言中数据有常量与变量之分,它们分别属于以上这些类型。由以上这些数据类型还可以构成更复杂的数据结构。

5、例如利用指针和结构体类型可以构成表、树、栈等复杂的数据结构。在程序中对用到的所有数据都必须指定其数据类型。在本章中主要介绍基本数据类型。,2.2 常量与变量,2.2.1 常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。常量区分为不同的类型,如12,0,-3为整型常量,4.6、-1.23为实型常量,a,d为字符常量。常量一般从其字面形式即可判别。这种常量称为字面常量或直接常量。 也可以用一个标识符代表一个常量,如: 例2.1 符号常量的使用。 #define PRICE 30 main ( ) ,int num, total; num=10; total=num * PRICE;

6、printf(“total=%d“,total); 程序中用#define命令行定义PRICE代表常量30,此后凡在本文件中出现的PRICE都代表30,可以和常量一样进行运算,程序运行结果为 total=300 有关#define命令行的详细用法参见第8章。,这种用一个标识符代表一个常量的,称为符号常量,即标识符形式的常量。请注意符号常量不同于变量,它的值在其作用域(在本例中为主函数)内不能改变,也不能再被赋值。如再用以下赋值语句给PRICE赋值是错误的。 PRICE =40; 习惯上,符号常量名用大写,变量用小写,以示区别。 使用符号常量的好处是: (1) 含义清楚。如上面的程序中,看程序时

7、从price就可知道它代表价格。因此定义符号常量名时应考虑“见名知意”。 在一个规范的程序中不提倡使用很多的常数,如:sum= 15 * 30 * 23.5 * 43。在检查程序时搞不清各个常数究竟代表什么。应尽量使用“见名知意”的变量名和符号常量。,(2) 在需要改变一个常量时能做到“一改全改”。 例如在程序中多处用到某物品的价格,如果价格用常数表示,则在价格调整时,就需要在程序中作多处修改,若用符号常量PRICE代表价格,只需改动一处即可。如: #define PRICE 35 在程序中所有以PRICE代表的价格就会一律自动改为35。,2.2.2 变量 其值可以改变的量称为变量。一个变量应

8、该有一个名字,在内存中占据一定的存储单元。在该存储单元中存放变量的值。请注意区分变量名和变量值这两个不同的概念,见图2.1。变量名实际上是一个符号地址,在对程序编译连接时由系统给每一个变量名分配一个内存地址。在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。,图2.1,和其他高级语言一样,用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符(identifier)。简单地说,标识符就是一个名字。 C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。下面列出的是合法的标识符,也是合法的变量名: su

9、m,average, -total, class, day, month, student-name,tan,lotus-1-2-3,basic, li-ling 下面是不合法的标识符和变量名: .d.John,y 123,33,3d64,ab,注意,大写字母和小写字母被认为是两个不同的字符。因此,sum和suM,class和class是两个不同的变量名。一般,变量名用小写字母表示,与人们日常习惯一致,以增加可读性。 ANSI C标准没有规定标识符的长度(字符个数),但各个c编译系统都有自己的规定。有的系统(如IB PC的S C)取8个字符,假如程序中出现的变量名长度大于8个字符,则只有前面8

10、个字符有效,后面的不被识别。例如,有两个变量:student_name和student_number,由于二者的前8个字符相同,系统认为这两个变量是一回事而不加区别。可以将它们改为stud_name和stud_num,以使之区别。,Turbo C则允许32个字符。因此,在写程序时应了解所用系统对标识符长度的规定,以免出现上面的混淆。这种错误并不反映在编译过程中(即语法无错误) ,但运行结果显然不对。为了程序的可移植性(即在甲机器上运行的程序可以基本上不加修改,就能移到乙机器上运行)以及阅读程序的方便,建议变量名的长度不要超过8个字符。 如前所述,在选择变量名和其他标识符时,应注意做到“见名知意

11、”,即选有含意的英文单词(或其缩写)作标识符,如count、name、day、month、total、country等,除了数值计算程序外,一般不要用代数符号(如a、b、c、x1、y1等)作变量名,以增加程序的可读性。,这是结构化程序的一个特征。本书在一些简单的举例中,为方便起见,仍用单字符的变量?如a、b、c等),请读者注意不要在其他所有程序中都如此。 在c语言中,要求对所有用到的变量作强制定义,也就是“先定义,后使用”,如例12、例13那样。这样做的目的是: (1) 凡未被事先定义的,不作为变量名,这就能保证程序 中变量名使用得正确。例如,如果在定义部分写了 int student;,而在

12、执行语句中错写成staent。如: staent=30; 在编译时检查出statent未经定义,不作为变量名。输出“变量statent未经声明”的信息,便于用户发现错误,避免变量名使用时出错。 (2) 每一个变量被指定为一确定类型,在编译时就能为其分配相应的存储单元。如指定a、b为int型,turbo c编译系统为a和b各分配两个字节,并按整数方式存储数据。 (3) 指定每一变量属于一个类型,这就便于在编译时,据此检查该变量所进行的运算是否合法。例如,整型变量a和b,可以进行求余运算:a%b %是“求余”(见2.8节),得到a/b的余数。如果将a、b指定为实型变量,则不允许进行“求余”运算,在

13、编译时会给出有关“出错信息”。,2.3 整型数据(integer),2.3.1 整型常量的表示方法 整型常量即整常数。c整常数可用以下三种形式表示: (1) 十进制整数。如123, -456, 0。 (2) 八进制整数。以0开头的数是八进制数。如0123表示八进制数123,即(123)8,其值为:182+281+380,等于十进制数8 3。-011表示八进制-11,十进制数-9。 (3) 十六进制整数。以0x开头的数是十六进制数。如0x123,代表十六进制数123,即(123)16=1162+2161+3160=256+32+3=291。-0x12等于十进制数-18。,2.3.2 整型变量 1

14、. 整型数据在内存中的存放形式数据在内存中是以二进制 形式存放的。 如果定义了一个整型变量i: int i; /* 定义为整型变量 */ i=10; /* 给i赋以整数10 */ 十进制数10的二进制形式为1010,在微机上使用的c编译系统,每一个整型变量在内存中占2个字节。图2.2(a)是数据存放示意图。图2.2(b)是数据在内存中实际存放情况。,图2.2 实际上,数值是以补码(complement) 表示的。一个正数的补码和其原码的形式相同。图2.2(b) 就是用补码形式表示的。如果数值是负的,在内存中如何用补码形式表示呢?求负数的补码的方法是:将该数的绝对值的二进制形式,按位取反再加1。

15、例如求-10的补码:取-10的绝对值10;10的绝对值的二进制形式为1010;对1010取反得1111111111110101(一个整数占16位);再加1得1111111111110110,见图2.3。,图2.3 可知整数的16位中,最左面的一位是表示符号的,该位为0,表示数值为正;为1则数值为负。 关于补码的知识不属于本书的范围,但学习c语言的读者应该比学习其他高级语言的读者对数据在内存中的表示形式有更多的了解。这样才能理解不同类型数据间转换的规律。在本章稍后的叙述中还要接触到这方面的问题。,2. 整型变量的分类 整型变量的基本类型符为int。可以根据数值的范围将变量定义为基本整型、短整型或

16、长整型。在int 之前可以根据需要分别加上修饰符(modifier): short(短型)或long(长型)。因此有以下三种整型变量: (1) 基本整型,以int表示。 (2) 短整型,以short int表示,或以short表示。 (3) 长整型,以long int表示,或以long表示。 在turbo c中一个int型的变量的值范围为-215(215-1) ,即-3276832767。在实际应用中,变量的值常常是正的(如学号、库存量、年龄、存款额等)。,为了充分利用变量的表数范围,此时可以将变量定义为“无符号”类型。对以上三种都可以加上修饰符unsigned,以指定是“无符号数” 。如果加上修饰符signed,则指定是“有符号数”。 如果既不指定为signed,也不指定为unsigned,则隐含为有符号(signed)。实际上signed是完全可以不写的。归纳起来,可以用以下6种整型变量。即: 有符号基本整型 signed int 无符号基本整型 unsign

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号