您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 谭浩强C程序设计课件完整版第2章
第二章数据类型、运算符和表达式本章目录2.1C语言的数据类型2.2常量2.3变量2.4运算符和表达式2.5数据类型的转换2.1C语言的数据类型一个程序应包括数据结构和算法。数据结构是在程序中要指定数据的类型和数据的组织形式。算法是如何对数据结构进行处理达到编程者的目的的想法,由于每个人的想法不一样,所以程序代码有可能不相同,但最后都能达到自己的目的。根据不同的编程语言,程序的概念可以这样表示:程序=算法+数据结构+程序设计方法+语言环境C语言的数据结构是以数据类型形式出现的。C的数据类型如下:构造类型整型int字符型char实型(浮点型)枚举类型enum基本类型空类型void指针类型*单精度型float双精度型double数据类型数组类型结构体类型struct共用体类型union2.2常量在程序执行过程中,其值始终保持不变的量称之为常量。常量具有一定的类型,类型由其表示形式决定。在C语言中,常量可以分为整型常量、实型常量、字符型常量、字符串常量、符号常量等。2.2常量1.整型常量整型常量就是整型常数,它是一种从字面即可判断其值的常量。C语言中常量可以用十进制、八进制和十六进制表示。1.十进制整数。由数字0~9组成但第一个数不能为0的整数。如:123,-456,0。2.八进制整数。以0开头由0~7组成的整数。如0123表示八进制数123。3.十六进制整数。以0x开头由数字0~9和字母a~f(A~F)组成的的数。如0x123,代表数十六进制的123。整型常量的写法一定要合法,下面各数不合法:078,3a。其中078表示八进制数,但包含了0~7以外的数8。3a表示十进制数,但包含了0~9以外的字符a。2.2常量2.实型常量实数又称浮点数,就是日常生活中的带小数点的数。实型常量有两种表示形式:(1)十进进小数形式。它由数字和小数点组成(注意必须有小数点)。如.123、123.、123.0、0.0都是十进制小数形式。其中123.0末尾的数字0可以省略,.123小数点前面的0可以省略,0.0可以省略其中一个0但不能都省略。(2)指数形式。如123e3或123E3都代表123×103。但注意字母e(或E)之前必须有数字,且e后面的指数必须有整数,如e3,2.1e3.5,.e3,e等都不是合法的指数形式。一个实数可以有多种指数表示形式。例如123.456可以表示为,12.3456e1,1.23456e2,0.123456e3等。把其中的1.23456e2称为“规范化的指数形式”,即在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字。一个实数在用指数形式输出时,是按规范化的指数形式输出的。例如,指定将实数5689.65按指数形式输出,必然输出5.68965e+003。2.2常量3.字符型常量由字符组成的、其值不能被改变的量称为字符型常量。根据组成结构的不同,字符型常量可分为字符常量、转义字符和字符串常量。1.字符常量和转义字符C的字符常量是用单引号(')括起来的一个字符。如'a','x','D','?','$'等都是字符常量。注意,'a'和'A'是不同的字符常量。除了以上形式的字符常量外,C还允许用一种特殊形式的字符常量,就是以一个“\”开关的字符序列。例如,前面已经遇到过的,在printf函数中的‘\n’,它代表一个“换行”符。这是一种“控制字符”,在屏幕上是不能显示的。在程序中也无法用一个一般形式的字符表示,只能采用特殊形式来表示。“\”使后跟的一个字符失去了原有的意义,因此又称作转义字符。如,‘\n’中的“n”不代表字母n,而作为“回车换行”符处理。转义字符是一种特殊形式的字符常量,主要用以表示控制代码和图形符号。常用的转义字符见下表:2.2常量字符形式等价于ASCII码转义字符的意义\a\x077鸣铃\b\x088退格,将当前位置移到前一列\f\X0C12走纸换页\n\X0A10回车换行\r\X0D13回车,将当前位置移到本行开头\t\X099水平制表(跳到下一个tab位置)\\\X5C92反斜杠字符“\”\'\X2739单引号字符\''\X2234双引号字符\dddddd代表1-3位八进制数所代表的字符\xhhhh代表1-2位十六进制数所代表的字符表中,\ddd是用八进制数表示的ASCII码。例如:用八进制数'\102'(相当于十进制数66)代表ASCII字母“B”;用'\033'代表Esc。从ASCII码表中能够查到常用的转义字符。\xhh是用十六进制数表示的ASCII码。例如:用'\x1B'同样可以代替Esc。由此可知,用转义字符可以表示任一ASCII码;并且任一ASCII码可以有多种表示方法。2.2常量有关字符常量的几点说明:1)单引号本身只作定界符使用,而不是字符常量的一部分。2)因字符“'”和“\”在字符常量中有特殊用途,因此,他们不能直接作字符常量使用。若要将这两个字符用作字符常量,应写为'\''和'\\',即在这些字符前再加一个反斜杠“\”。3)英文字母区分大小写。注意,'a'和'A'是不同的字符常量。4)字符常量具有数值,其值对应于ASCII码值,是0-255之间的整数。例如,'A'的值是65,'a'为97。因此,字符型常量与整型常量可以混合使用。在不至于引起混淆的情况下,0-255之间的整数可以用字符常量表示。例如,把63写成'A'-2,反之亦然。5)输出字符常量时的输出格式控制符用%c。2.2常量例2.1字符型常量与整型常量混合使用实例。要求编程输出字符“#”以及其ASCII码值,求'a'+1的值和输出其ASCII字符,输出整数65以及该数字所对应的ASCII字符。main(){printf(%c,%d\n,'#','#');printf(%c,%d\n,'a'+1,'a'+1);printf(%c,%d\n,65,65);}运行结果如下:2.2常量2.字符串常量字符串常量是一对双引号括起来的字符序列,如,“Howdoyoudo.”,“CHINA”,“a”,“$123.45”都是字符串常量。可以直接输出一个字符串。如printf(“Howdoyoudo.”);不要将字符常量与字符串常量混淆。’a’是字符常量,“a”是字符串常量,二者不同。有人不能理解’a’和“a”究竟有什么区别?C规定:在每一个字符串的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。C规定以字符’\0’作为字符串结束标志。’\0’是一个ASSCII码为0的字符,从ASSCII代码中可以看到ASSCII码为0字符是“空操作字符”,即它不引起任何控制动作,是一个不可显示的字符。如果有一个字符串“CHINA”,实际上在内存中是它的长度不是5个字符,而是6个字符,最后一个字符为’\0’。CIHNA\02.2常量4符号常量在程序设计中,对于某些有特定含义的、经常使用的常量可以用标识符来代替。用标识符代表常量,可增加程序的可读性和可维护性。在C语言中,代表常量的标识符称作符号常量。符号常量在使用之前必须先定义,符号常量定义的一般格式为:#define标识符常量其中#define表示宏定义的一个命令,宏定义必须写在一行上。标识符称为“宏名”,字符串称为“宏体”。其功能是把该标识符定义为其后的常量值。一经定义,在程序中所有出现该标识符的地方均代表该常量值。习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。2.2常量例2.2宏定义的使用#definePI3.14159/*宏定义命令定义PI为3.14159*/main(){floats,r;/*s,r定义为实型变量用来存放实型数据*/r=5;/*5赋值给r*/s=PI*r*r;printf(s=%f\n,s);}运行结果为:2.2常量使用符号常量的好处是:(1)含义清楚。如上面的程序中,看程序时从PI就可知道它代表“π”。因此定义符号常量名时应考虑“见名知意”。(2)在需要改变一个常量时能做到“一改全改”。在定义符号常量时,应注意以下几点:1如果程序中有多个符号常量,必须用多个命令行分别定义。即一行只能定义一个符号常量。#definePI3.1415926#defineTRUE12符号常量代表的常量可以是前文介绍的各种形式的常量,还可以代表程序的其他语法成分。2.2常量例2.3#definePprintfmain(){chara,b;a='x';b='y';a=a-32;b=b-32;P(%c,%c\n%d,%d\n,a,b,a,b);}运行结果为:这里用P代表了库函数名printf,3)符号常量的定义可以放在程序的任何位置,但必须在使用之前预先定义;因此,一般放在程序的开始位置。2.3变量在程序运行过程中,其值可以改变的量称为变量。一个变量必须有一个名字即变量名,变量名要遵守标识符的命名规则。变量名在内存中占据一定的存储单元。在该存储单元中存放变量的值。下面各节分别介绍整型、实型(浮点型)、字符型变量。2.3变量1.整型变量1.整型变量的分类整型变量的用来存放整型常量的。根据数值的范围将变量定义为基本整型、短整型或长整型。分别表示:1)基本整型,以int表示。2)短整型,以shortint表示,或以short表示。3)长整型,以longint表示,或以long表示。在TurboC中一个int型的变量值的范围-215~(215-1),即-32768~32767。可以将变量定义为“无符号”和“有符号”类型,即加上修饰符unsigned和修饰符signed。如果既不指定为signed,也不指定为unsigned,则隐含为有符号(signed)。归纳起来,可以用以下6种整型变量。即:有符号基本整型[signed]int无符号基本整型unsignedint有符号短整型[signed]short[int]无符号短整型unsignedshort[int]有符号长整型[signed]long[int]无符号长整型unsignedlong[int]2.3变量C标准没有具体规定以上各类数据所占内存字节数,只要求long型数据长度不短于int型,short型不长于int型。具体如何实现,由各计算机系统自行决定。TurboC系统对各类数据分配如下:数据类型所占字节数(个)所占位数(bit)int216short216long432unsignedint216unsignedshort216unsignedlong432表2.2数据类型一个unsignedint型的变量值的范围0~65535。在计算机内整形数据占2个字节。以2为例,把2转化为二进制之后,它的存储形式为:00000000000000102.3变量2.整型变量的定义C规定在程序中所以用到的变量都必须在程序中先定义后使用,即“强制类型定义”。每个变量必须要有确定的类型。整型变量定义的一般形式:整型数据类型名变量名;例如:inta,b;(指定变量a、b为整形)unsignedshortc,d;(指定变量c、d为无符号短整型)longe,f;(指定变量e,f为长整型)对变量的定义,一般是放在一个函数的开头部分的声明部分(也可以放在函数中某一分程序内,但作用域只限它所在的分程序)。C语言允许在一个定义中定义多个变量,变量之间用逗号隔开。变量定义之后,编译系统就会为其分配相应的存储空间。2.3变量例2.4整型变量的定义与使用。main(){inta,b;/*定义a,b为基本整型变量*/unsignedu;/*定义u为无符号整型变量*/a=12;u=10;b=a+u;printf(a+u=%d\n,b);}运行结果为:可以看到不同种类的整型数据可以进行算术运算。在本例中是int型数据与unsignedint型数据进行相加相减运算。2.3变量3.整型号数据的溢出在TurboC中一个int型变量的最大允许值为32767,如果再加1,会出现什么情况?例2.5整型数据的溢出。main(){inta,b;a=32767;b=a+1;printf(“%d,%d”,a,b);}运行结果为:2.3变量
本文标题:谭浩强C程序设计课件完整版第2章
链接地址:https://www.777doc.com/doc-5102436 .html