谭浩强C程序设计(第三版)_第3章_数据类型_第1页
谭浩强C程序设计(第三版)_第3章_数据类型_第2页
谭浩强C程序设计(第三版)_第3章_数据类型_第3页
谭浩强C程序设计(第三版)_第3章_数据类型_第4页
谭浩强C程序设计(第三版)_第3章_数据类型_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,第3章,数据类型,运算符和表达式,本章要点,数据描述规则,数据操作规则,主要内容,3.1 C 3.2常量和变量的数据类型3.3整数数据3.4浮点数据运行3.5字符数据,主要内容,3.6变量的初始值赋值3.7各种数字数据之间的混合运算3.8算术运算符和表达式3.9赋值运算符和表达式3.10逗号运算符和逗号表达式3.1 C数据类型,C语言提供以下数据类型。数据类型,构造类型,指针类型,空类型(无值类型)void,3.2常量和变量,3.2.1常量和符号常量。在程序运行过程中,不能改变值的量称为常数,常数分为不同的类型:整数100,125,-100,0实数类型3.14,0.125,-0。2 字符串

2、a , ab , 1232 ,示例3.1使用符号常量#定义价格30 #包括void main () int num,total数字=10;总计=num * PRICEprintf(总计=%dn,总计); ,符号常量:表示带有标识符的常量。符号常量的值不能在其范围内更改,也不能再赋值。运行结果:total=300,描述:程序使用#define命令行定义PRICE代表常量30,然后此文件中出现的所有PRICE代表30,可以像常量一样操作,描述:用赋值语句将值赋值给PRICE是错误的,PRICE=40/*错误,不能给符号常量赋值,3.2常量和变量,3.2.2变量代表内存中具有特定属性的存储单元,用于

3、存储数据,即变量值,这些值可以在程序运行期间更改。事实上,一个变量名对应一个地址,编译系统在编译和连接程序时为每个变量名分配一个相应的内存地址。从变量中取值实际上是通过变量名找到相应的内存地址,并从内存位置读取数据。3.2常量和变量,变量命名规则:C语言规定标识符只能由字母、数字和下划线组成,第一个字符必须是字母或下划线。示例:sum,_total,month,Student_name,lotus _ 1 _ 2 _ 3,basic,Li _ ling m.d. John, 123,3d64,ab、3.2常量和变量。注意:编译系统将大写字母和小写字母视为两个不同的字符。建议变量名的长度不要超过

4、8个字符。当选择变量名和其他标识符时,应该注意“知道你知道什么,当你知道你的意思”,也就是说,选择有意义的英语单词(或它们的缩写)作为标识符。要求强制定义所有使用的变量,即“先定义,后使用”。3.3整数数据,3.3.1整数常数的表示方法。在C语言中,整数常量可以用以下三种形式表示:(1)十进制整数。例如:123,-456.4。(2)八进制整数。以0开头的数字是八进制数。例如,0123表示八进制数123,等于十进制数83,而-011表示八进制数-11,即十进制数-9。3.3整数数据,(3)十六进制整数。以0 x开头的数字是十六进制数。例如,0 x123代表十六进制数123,它等于十进制数291。

5、-0 x12等于十进制数-10。3.3.2整数变量(1)存储器中整数数据的存储形式数据以二进制形式存储在存储器中。例如:国际单位制;/*被定义为整数变量*/I=10;/*我被分配整数10 */,3.3整数数据。注意:十进制数10的二进制形式是1010。Turbo C 2.0和Turbo C 3.0为整数变量分配2字节的内存(不同的编译系统为整数数据分配不同的字节,而VC 6.0分配4字节)。数值用补码表示。,3.3整型数据,(2)整型变量的分类,有六种,有符号基本整型有符号短整型有符号长整型无符号基本整型无符号短整型无符号长整型,(有符号)int(有符号)short (int)(有符号)lon

6、g (int) unsigned int(无符号int)unsigned short(int)unsigned long(int),注意:括号表示内容是可选的。3.3整数数据,以及整数类型的相关数据:类型范围类型描述符长度数字基本int 2 Bytes-32768 32767 Short Short 2 Bytes-215 215-1 long 4 Bytes-231 231-1 Unsigned 2 Bytes 0 65535 Unsigned Short 2 Bytes 0 65535 Unsigned long 4 Bytes 0 (232-1),3.3整数数据,例如,实际存储在内存中的

7、整数13:3.3整数数据,(3.3)例如, int a,b(将变量a,b指定为整数)无符号短c,d。(将变量c和d指定为无符号短整数)鳄龙,f;(将变量e和f指定为长整数),示例3.2整数变量的定义和使用#包括void main () int a,b,c,d;/*将a、b、c和d指定为整数变量*/无符号u;/*将u指定为无符号整数变量*/a=12;b=-24;u=10c=a+u;d=b+u;printf(a+u=%d,b+u=%dn,c,d);,说明:可以看出,不同类型的整数数据可以进行算术运算,运算结果是:A U=22,B U=-14,例3.3整数数据溢出#包括void main() int

8、 a,B;a=32767。b=a1;printf(%d,%dn ,a,b);,描述:数值用补码表示。整数变量只能包含-32768 32767范围内的数字,不能表示大于或小于-32767的数字。在这种情况下,会发生“溢出”。运行结果:32767,-32768,3.3整数数据,3.3.3类型的整数常量(1)一个整数,如果其值在-32768 32767范围内,则认为是int类型,并可将其赋给int类型和长int类型变量。(2)如果一个整数的值超过上述范围,并且在-2147483637 2147483647的范围内,则认为该整数是长整数。您可以将其赋给long int类型的变量。3.3整数数据,(3)

9、如果分配给短整型的C版本(例如Turbo C)和整型的数据在内存中占用相同的长度,则其表号范围与整型的表号范围相同。因此,整型常量也是一个短整型常量,可以分配给整型变量或短整型变量。3.3整数数据,(4)一个整数常量后面跟一个字母u或u,这被认为是无符号int类型,例如12345u,它以无符号int指定的方式存储在存储器中(存储器单元中的最高位不用作符号位,而是用于存储数据)。如果写为-12345u,首先将-12345转换为它的补码53191,然后将其存储为无符号数。3.3整数数据,(5)在整数常数后加上字母l或l被视为长整型常数。示例:123l.432L.0L用于函数调用。如果函数的形式参数

10、是long int类型,则实际参数必须是long int类型。3.4浮点数据,3.4.1浮点常数的表示方法,两种表示形式,十进制指数,0.123 3e-3,注意在:字母e(或e)之前必须有一个数字,而e之后的指数必须是整数,1e3,1.8e-3,-123e-6,-1.1e-。标准化指数形式:在字母E(或E)之前的小数部分,小数点左边应该有一个(并且只有一个)非零数字。例如, 123.456可以表示为:123.456E0、12.3456E1、1.23456e3、0.123456E3、0.0123456E4等。3.4浮点数据,3.4.2浮点变量(1)浮点数据在内存中的存储形式浮点数据通常在内存中占

11、据4个字节(32位)。与整数数据不同,浮点数据以指数形式存储。系统将浮点数据分为十进制部分和指数部分,它们分别存储。索引部分采用标准化的索引形式。3.4浮点数据,(2)浮点变量的分类浮点变量分为三种类型:单精度(浮点型)、双精度(双精度型)和长双精度型。例3.4浮点数据的舍入误差#包括void main() float a,b;a=123456.789e5。b=a20;printf(%fn ,b);,说明:浮点变量只能保证的有效数字是7个有效数字,以下数字没有意义,不能准确表示数字。应该避免直接加或减一个大的数和一个小的数,否则小的数会“丢失”。运行结果:123456.789e5,3.4浮点数

12、据,3.4.3浮点常量类型C编译系统将浮点常量视为双精度。例如,如果f=2.45678 * 4523.65,系统先取2.45678和4523.65作为双精度数,然后进行乘法运算,得到的乘法也是双精度数。最后,前7位被分配给浮点变量f。如果在数字后加上字母f或f(例如1.65f,654.87F),编译系统将把它们当作单精度(32位)。3.5字符数据,3.5.1字符常量(1)单引号中包含的字符是字符常量(2)它只能包含一个字符,例如,“A”,“A”,“1”,“ABC”,“A”,“3.5字符数据,其中一些以“ Ddd Ddd表示1-3个八进制数字xhh表示1-2个十六进制数字,示例3.5转义符#的使

13、用包括void main() printf(“ab c t de RF TG n”);printf(htibbj kn)。,打印机上的显示结果:fab c gde h jik,显示屏上的运行结果:f gde h j k,3.5字符数据,3.5.2字符变量字符变量用于存储字符常量,注意只有一个字符。字符变量定义如下:字符c1,C2;在此函数中,您可以使用以下语句为C1和C2赋值:C1= a ;c2= b字符变量在内存中占据一个字节。3.5字符数据、3.5.3字符数据在内存中的存储形式及其用法。字符常量存储在字符变量中。事实上,字符的字体不存储在存储器中,但是字符的相应的ASCII码存储在存储单元

14、中。这使得字符数据和整数数据变得常见。请注意,一个字符数据可以以字符或整数的形式输出。示例3.6将整数赋给字符变量。#包括void main() char c1,C2;c1=97c2=98printf(%c %cn ,c1,C2);printf(%d %dn ,c1,C2);,说明:在第三和第四行中,整数97和98分别赋给c1和c2,它们的函数等价于以下两个赋值语句:C1= a ;C2=b;因为“a”和“b”的ASCII码是97和98,所以运行结果:AB 97 98,示例3.7大小写字母的转换#包括void main () charc1,C2;c1= ac2= bC1=C1-32;C2=C2-

15、32;printf(“% c % c ”, C1,C2);,说明:该程序的功能是将两个小写字母A和B转换成大写字母A和B。从ASCII码表中可以看出,每个小写字母比其对应的大写字母的ASCII码大32。c语言允许字符数据直接用整数进行算术运算。运行结果:a b,3.5字符数据,描述:一些系统(如Turbo C)将字符变量定义为带符号字符。其存储单元中的最高位用作符号位,其取值范围为-128 127。如果字符变量中存储了ASCII码在0到127之间的字符,因为字节中的最高位是0,当字符变量以%d输出时,输出为正整数。如果字符变量中存储了ASCII码在128和255之间的字符,因为字节中的最高位是

16、1,所以当以%d格式符号输出时,将获得一个负整数。,3.5字符数据,3.5.4字符串常量字符串常量是由一对双撇号括起来的字符序列。合法字符串常量:“您好”“中国”、“一个”、“123.45美元”可以输出一个字符串,如printf(“您好”);3.5字符数据,“a”是字符常数,“a”是字符串常数,两者是不同的。例如,假设c被指定为字符变量:char c,c= ac= ac=中国;结论:字符串常量不能分配给字符变量。c规定:在每个字符串常量的末尾添加一个“字符串结束符号”,以便系统可以判断字符串是否结束。c指定字符 0 作为字符串的结束符号。例如,如果有一个字符串常量“中国”,它实际上是:在存储单元

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论