【教学课件】第2章数据类型、运算符和表达式.ppt
《【教学课件】第2章数据类型、运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第2章数据类型、运算符和表达式.ppt(86页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、白 雪 飞中国科学技术大学电子科学与技术系Dept.of Elec.Sci.&Tech.,USTCFall,2003第第2章章 数据类型、运算符和表达式数据类型、运算符和表达式目 录l数据类型、常量和变量的定义l运算符的种类、优先级和结合方向l表达式的类型和求值l简单的C程序设计及基本输入输出2 2C的数据类型(Data Types)l基本类型n整型、字符型、浮点型(实型)、枚举类型l构造类型n数组类型、结构体类型、共用体类型l指针类型l空类型3 3数据类型、常量和变量lC的数据结构是以数据类型形式出现的l由前述数据类型可以构造出更复杂的数据结构lC语言的数据有常量和变量之分l常量和变量都分别
2、属于某一数据类型l程序中用到的所有数据都必须指定类型l本章仅介绍基本数据类型4 4标识符(Identifier)l标识符n变量名、符号常量名、函数名、类型名l标识符命名规范n由字母、数字、下划线(Underscore,_)组成n第一个字符必须为字母或下划线nC语言标识符是大小写敏感的n标识符的名称一般应具有一定的含义n不要与C语言关键字(Keywords)重复n一般不要使用以下划线开头的标识符5 5标识符示例l正确的标识符nstudent、num1、_SUM、_1_2_3nMyName、myname、my_namel错误的标识符nroom3-1包含了其他字符(减号)n2men以数字开头nlon
3、g与关键字重复nMr.Zhu包含了其他字符(小数点)6 6常量(Constants)l常量n程序运行过程中,其值不能被改变的量n例如:12、-6.7、al符号常量(Symbolic Constants)n用一个标识符代表的常量n相当于把标识符用一个常量简单替换下来n标识符是一个整体,不要试图拆开来替换n含义清楚,一改全改n习惯上符号常量名用大写字母7 7常量示例#define PRICE 30#define NUM 12void main().total=NUM*PRICE;total2=84*PRICE2;printf(total=%d,total);.不会被替换=total=12*30;常
4、量符号常量8 8变量(Variables)l其值可以改变的量称为变量l变量有一个名字,即标识符l变量在存储器中占据一定的存储单元l变量占据存储空间的大小由其类型决定l变量名表示存储变量的存储单元地址l程序使用变量名表示这个变量所占据的存储单元里存储的数据的值l变量要“先定义,后使用”9 9变量的存储34a变量名存储单元(地址)变量值1010整型(Integer)l整型常量的表示方法l整型变量n整型数据在内存中的存放形式n整型变量的类型n整型变量的定义n整型数据的溢出l整型常量的类型1111整型常量的表示方法l十进制(Decimal)n例如,123、-456、0l八进制(Octal)n以0开头,
5、不得含有8或9n例如,0123、-0456n错例,0138、-0912l十六进制(Hexadecimal)n以0 x或0X开头,用af或AF表示1015n例如,0 x123、-0X45、0 x3AB、-0 xabc1212整型数据在内存中的存放方式l二进制形式n举例,int i=50;/*int类型占2字节*/l补码(Complement)n正数:与原码一致,首位为0n负数:绝对值取反加一,首位为1n零:各位全为00 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0高地址字节低地址字节1313补码举例l举例nint i=-50;/*int类型占2字节*/0 0 0 0 0 0 0 0
6、 0 0 1 1 0 0 1 01 1 1 1 1 1 1 1 1 1 0 0 1 1 0 11 1 1 1 1 1 1 1 1 1 0 0 1 1 1 050的原码-50的补码取反加一1414整型变量的分类l按占用存储空间的大小划分n基本整型intn短整型short intn长整型long intl按有无符号划分n有符号signedn无符号unsignedl上述两种分类方式组合,可得到6种类型1515整数的长度l整数的类型与长度nshort:占2字节(16bit)nlong:占4字节(32bit)nint:占2或4字节(16或32bit)n2Bytes=short int long=4Byt
7、esn若需要精确的长度,可选用short或longl举例nBC3.1:int长度为2Bytesngcc:int长度为4Bytes1616有符号数与无符号数l有符号数n二进制补码表示,首位为符号位n指定signed或缺省情况,即为有符号数l无符号数n没有符号位,只能表示非负数n无符号数类型必须指定为unsignedn若把负数赋值给无符号数,则把该负数的补码当作无符号数进行处理1717有符号数与无符号数举例void main()int i;unsigned j;i=j=-50;i=i/2;/*-25*/j=j/2;/*32743*/1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0-5
8、0的补码i,j/21 1 1 1 1 1 1 1 1 1 1 0 0 1 1 10 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1i/2-25的补码j/232743的补码/原码1818整型数据的取值范围类 型长度(bit)取值范围signed short int16-215 215-1unsigned short int160 216-1signed int16 or 32-215(31)215(31)-1unsigned int16 or 320 216(32)-1signed long int32-231 231-1unsigned long int320 232-11919整
9、型变量的定义(Definition)l定义形式nint a,b;nunsigned c;nlong d;nunsigned short e;l变量的定义一般放在一个函数开头的声明部分,关于变量定义的具体内容在以后相关章节里详细介绍2020整型变量的定义与使用举例void main()int a;/*定义有符号基本整型变量a*/unsigned b;/*定义无符号基本整型变量b*/long c;/*定义有符号长整型变量c*/a=-23;/*a的值为-23*/b=45;/*b的值为45*/c=a+b;/*c的值为22*/2121整型数据的溢出(Overflow)l溢出n数据超出了变量能够存储的范围
10、,造成数据丢失或数值改变等l举例void main()int a=32767;a+;/*32768?*/0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0+132767的补码-32768的补码2222整型常量的类型l常量的类型后缀(Suffix)nl、L表示常量是一个长整型nu、U表示常量是一个无符号整型数n两种后缀可以一起使用l举例n123l 长整型常数123n456U 无符号整型常数456n789ul无符号长整型常数789n101Lu无符号长整型常数1012323整型常量使用中的类型问题l对整型变量赋值n常量的值不要
11、超过变量的取值范围l直接使用常量n带有l、L、u、U等后缀的整型常量一般用于函数调用n不带有后缀的整型常量的类型,是根据其数值大小所处的范围来确定的2424浮点型(Floating Point)l浮点型常量的表示方法l浮点型变量n浮点型数据在内存中的存放形式n浮点型变量的类型n浮点型数据的舍入误差l浮点型常数的类型2525浮点型常量的表示方法l十进制小数形式n由符号、数字和小数点(必须)组成n整数和小数部分都可省略,但不能同时省略n举例,12.3、-.123、123.、0.、.0l指数形式n由整数(或小数)、e(或E)、整数顺序组成ne或E之前必须有数字,之后必须是整数n举例,123.4e-5
12、表示123.410-5n错例,e1、12e、.e5、e2626规范化指数形式l规范化指数形式n类似于“科学计数法”ne或E之前的小数中,小数点前面有且仅有一个非零数字l举例,123.456n规范化形式,1.23456e2、1.23456E+002n非规范化形式,123.456、12.3456e1、12345.6e-2、0.123456e3、12345600e-52727浮点型数据在内存中的存放方式l二进制规范化指数形式l小数部分长度与能表示的精度有关l指数部分长度与能表示的数值范围有关1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 0指数部分e小数部分f符号s2828几个特殊的数l
13、无穷大(Infinition)nInf举例,1.0/0.0n-Inf 举例,-1.0/0.0lNaN(Not a Number)nNaN举例,sqrt(-1)/*开平方*/n-NaN 举例,-sqrt(-1)l零(Zero)n浮点数用特殊的形式表示零2929浮点型变量的类型l分类n单精度 floatn双精度 doublen长双精度 long doublel长度和取值范围类 型长度(bit)有效数字绝对值范围float326710-371038double64151610-30710308long double128181910-49311049323030浮点型数据的舍入误差l由于浮点型变量能
14、够表示的有效数字有限,将有效位以外的数字舍去造成误差l举例float a=123456.789e5,b;b=a+20;printf(a=%fnb=%fn,a,b);运行结果 n思考:1.0/3*3=?3131浮点型常量的类型l类型后缀nf、F表示常量是一个单精度型浮点数nl、L表示常量是一个长双精度型浮点数n无任何后缀的浮点型常量视作双精度型l对浮点型变量赋值n一个浮点型常量可以赋值给任何类型的浮点型变量n根据变量类型截取常量的相应有效数字n注意防止出现溢出3232字符型(Character)l字符型常量l字符型变量l字符型数据在内存中的存放形式l字符型数据的使用方法l字符串常量3333字符型
15、常量l单引号括起来的一个字符n举例,a、A、1、?n错例,abc、我l转义字符n以开头的特殊字符nddd 1到3位8进制数ASCII码代表的字符nxhh 1到2位16进制数ASCII码代表的字符n举例,n、t、123、x3A3434字符型变量l字符型变量只能存放一个字符l定义与使用void main()char c1,c2;/*定义字符型变量c1和c2*/c1=a;/*c1的值为a*/c2=2;/*c2的值为2*/3535字符型数据在内存中的存放形式l一个字符型数据占一个字节的空间l字符型数据以其ASCII码形式存放l字符型数据的存放形式与只占一个字节长度的整型数据完全相同01100001c1
16、=a(ASCII=97)00110010c1=2(ASCII=50)3636字符型数据的使用方法l可以把字符型数据视作一种长度为1字节的整型数据处理n当使用字符型数据时,与使用这个字符的ASCII码(一个8位整数)是完全一样的n字符型数据的用法与整型数据完全一样,包括运算、赋值、输入、输出等n字符型数据使用过程中,同样需要注意溢出、符号等问题l是字符还是整数,只有在输出时才有意义3737字符型数据使用举例void main()char c;int i,j;c=97;/*c=a*/i=c+20;/*i=117*/j=2;/*j=50*/printf(%c,%dn,c,c);/*a,97*/383
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 数据类型 运算 表达式
限制150内