




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,数据类型、运算符与表达式,C语言程序设计,2,3.1C的数据类型,数据类型,基本类型,构造类型,指针类型,空类型,整型,字符型,实型(浮点型),单精度型,双精度型,枚举类型,数组类型,结构体类型,共同体类型,3,常量,在程序运行过程中,其值不能被改变的量称为常量,常量分为以下两类。可以从字面形式判别的是字面常量或直接常量;可以用一个标识符代表一个常量,称符号常量。符号常量的使用:#defineRATE8.54voidmain(void)floatresult;result=1000.0*RATE;printf(“resultis%fn”,result);,4,变量,变量名和变量值:,3,a,变量名,变量值,存储单元,标识符:标识变量名、符号常量名、函数名、类型名、文件名的有效字符序列。,C语言对标识符的规定:1、只能由英文字母、数字字符、下划线构成,且第一个字符必须是英文字母(大写或小写)或下划线。2、在C语言中,力求简洁,做到“见名知义”,TurboC允许32个字符。,C语言对变量的规定:做到先定义,后使用。,5,整型数据,整型常量的表示方法整型常量即整型常数十进制整数八进制整数(以0开头的数)十六进制整数(以0 x开头的数)整型变量的分类整型变量总体上可以分为有符号数和无符号数两类,6,整型数据,整型数据在内存中的存放形式整型数据在内存中以二进制形式存放,确切的说是以补码的形式表示的。一个正数的补码和原码形式相同,而负数的补码是将该数的绝对值的二进制形式,按位取反再加1。,7,整型数据,整型变量的定义对变量的定义,一般是放在一个函数的开头部分的声明部分。main()inta,b,c,d;/*定义整型变量*/unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%dtb+u=%dn”,c,d);整型数据的溢出如果一个整型变量存放的值,超出它所允许的范围,将会产生溢出,例如一个into型变量,如果其值为32767,再加1就会产生溢出,变成-32768。但运行时并不报错。,8,整型数据,整型常量的类型注意:1、一个整型常量,如果其值在-32768+32767范围内,认为它是into型,它可以赋给into型和longint型变量。2、一个整型常量,如果其值超过了上述范围,而在-2147483648+2147483647范围内,则认为它是longint型。3、一个整常数后面加一个字母u或U,认为是unsignedint型。4、一个整常数后面加一个字母l或L,认为是longint型常数。,9,实型数据,实型常量的表示方法1、十进制小数形式:.12323.12、指数形式:123e31.234e34(e前必须有数字,e后指数必须为整数)实型变量的分类单精度(float):4B10-38103867双精度(double):8B10-308103081516长双精度:16B10-49311049321819实型数据在内存中的存放形式一个实型数据一般在内存中占四个字节,系统把一个实型数分成小数部分和指数部分,分别存放采用规范化的指数方式示,如:,10,实型数据,实型变量的定义示例:floatx,y;/*指定x、y为单精度实数*/doublez;/*指定z为双精度实数*/实型数据应用中的误差问题(error.c)main()floata,b;doublec,d;a=123456.789e5;c=123456.789e5;b=a+20;d=c+20;printf(n%fn,a);printf(%fn,b);printf(%fn,c);printf(%fn,d);,应避免将一个很大的数和很小的数直接作加、减运算,否则就会“丢失”小的数。,11,实型数据,实型常量的类型1c编译系统将实型常量作为双精度来处理,若按照单精度来处理,应该在实型常量的后面加字母f或F。2实型常量赋值给实型变量的规则:根据实型变量的类型来截取实型常量中相应有效位数字(able.c)。main()floata;doubleb;a=123456.789876e5;b=12345.789876e5;Printf(“%f,%fn”,a,b);,12,字符型数据,字符常量C语言的字符常量是用单引号括起来的一个字符,如a,X,A。C语言还有一些特殊字符的常量,如下表,13,字符型数据,字符型变量字符变量用来存放字符常量,字符变量的定义形式如下:charc1,c2;可以用下面的语句对c1、c2赋值:c1=a;/*c1=97*/c2=b;/*c1=98*/printf(“%c,%c,%d,%d”,c1,c2,c1,c2);字符数据的存放以字符的ASCII码存放在存储单元中,97,98,01100001,01100010,C1,C2,C1,C2,14,字符型数据,例子大小写字母的转换main()charc1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c%c”,c1,c2);,注意:1、字符型数据和整形数据是通用的。但字符数据只能存放0255范围内的整数。2、字符数据与整数可以直接进行算术运算。3、字符数据与整型数据可以相互赋值4、TurboC将字符数据处理成带符号的整数,如果不想按有符号处理,可将字符变量定义为unsignedchar类型。,main()intoi;charc;i=a;c=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);,15,字符串常量,字符串常量字符常量是用一对双引号括起来的字符序列。如:Howdoyoudo.CHINAa$135.45用printf语句输出一个字符串常量:printf(Howdoyoudo.n);在内存中字符串是以字符0结束的,字符0是“字符串结束标志”,其ASCII码为0,以此判断字符串是否结束。注意:字符常量与字符串常量的区别:aa,a,0,a,16,变量赋值,先定义后赋值:inta;a=21;定义变量同时,使用变量初始化:inta=21;使被定义变量的一部分赋初值:inta,b,c=5;对几个变量同时赋初值:inta=3,b=3,c=3;例子:fuzhi2.c这两种初始化方式都对吗:charc1=a;charc2=“addff”;,17,各类数值型数据间的混合运算,看例子:3+6*8.7-12表达式123+23.4*b-2+a表达式是合法的。数据类型转换整型、实型、字符型数据间可以混合运算。在运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则如下所示:,高doublefloatlongunsigned低intchar,short,18,算术运算符和算术表达式,C运算符简介C语言的运算符有以下几类1.算术运算符(+-*/%+-)2.关系运算符(=|j=i+;注意1、上述两种运算只能用于变量,而不能用于常量或表达式。2、上述两种运算的结合方向是“自右至左”。例子:若i=3,则printf(“%d”,-i+)输出结果为-3,然后i增值为4,22,算术运算符和算术表达式,有关表达式使用中的问题说明1、表达式中包含自增或自减运算时,很容易出错。例如:(i+)+(i+)+(i+)不同系统处理的不同,如i为3,可为3+4+5,也可为3+3+3,为避免歧义性,如果想得到12,可以写成如下:i=3:a=i+;b=i+;c=i+;d=a+b+c;2、C语言中有的运算符为一个字符,有的运算符由两个字符组成,在表达式中尽可能多的“自左而右”组成一个运算符。如:i+j应解释为(i+)+j,而不是i+(+j)。3、在调用函数时,实参数的求值顺序,标准C中并没有统一规定。如:设i的初值为3,下面的函数调用printf(“%d%dn”,i,i+)在有的系统中,从左到右求值,输出“3,3”。在多数系统中,是从右到左求值,输出“4,3”。在vc和turboc中输出顺序都是从右到左。,23,赋值运算符和赋值表达式,赋值运算符赋值符号“=”就是赋值运算符,它的作用就是把一个数据赋给一个变量。类型转换如果等号两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。1、将实型数据赋给整型变量时,舍去实数的小数部分。2、将整型数据赋给单、双精度变量时,数值不变;但以浮点数形式存储到变量中。3、将一个double型数据赋给float变量时,截取其前面7位有效数字,但注意数值范围不能溢出。4、字符型数据赋值给整型变量,有两种情况如果所用系统将字符处理为无符号的量,则将字符的8位放到整型变量低8位,高8位补0。如果所用系统将字符处理为带符号的量,则进行符号扩展。图3.115、将一个into、short、long型数据赋给一个char型变量时,只将其低8位原封不动的送到char变量。图3.12,24,赋值运算符和赋值表达式,6、将带符号的整型数据(int)赋值给长整型(longint)变量时,要进行符号扩展。反之若将长整型数据赋值给一个整型变量,只将长整型数据中低16位原封不动送到整型变量(截断)。图3.13、3.147、将无符号整型数据(unsignedint)数据赋值给长整型(longint)变量时,不存在符号扩展的问题,只需将高位补0即可。8、将无符号unsigned类型数据赋给一个占字节数相同的整型变量时,若数据范围超过,则会出现数据错误。图3.159、将有符号型赋值给长度相同的unsigned型变量,原样照赋(连符号位也作为数值一起传送)。图3.16,25,赋值运算符和赋值表达式,复合赋值运算符在等号之前加上其它运算符,可以构成复合的运算符。例如a+=3等价于a=a+3x*=y+8等价于x=x*(y+8)C语言规定可以使用十种复合赋值符,即+=-=*=/=%=,26,逗号运算符和逗号表达式,逗号运算符(运算级别最低,自左向右结合性)它将两个表达式连接起来。其一般形式为表达式1,表达式2逗号表达式的求解过程是先求表达式1,再求表达式2。整个逗号表达式的值是表达式2的值。例如3+5,6+8其值为14;a=3*5,a*4其值为60。逗号表达式的一般形式的扩展形式为表达式1,表达式2,表达式n它的值为表达式n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业行业高级人才面试题库
- 初二数学下册各章思维导图
- 高级人才招聘:会员制面试题目及答案衍生职业岗位选择技巧
- 细胞染色原理
- 药品不良反应复核管理体系建设
- 汽轮发动机讲解课件
- 微纳米技术制造
- 人体巨噬细胞
- 选举人团制度解析
- 五老活动实施方案
- 围手术期的ERAS营养护理管理
- 高处作业非标吊篮专项施工方案
- 2024至2030年中国品牌战略咨询服务市场现状研究分析与发展前景预测报告
- 2022版新《物理》义务教育课程标准教师培训测试题附答案
- 辽宁省丹东市2023-2024学年八年级下学期期末数学试卷(含答案)
- TSG+11-2020锅炉安全技术规程
- 从高考改卷谈对物理教学的几点启示
- DB32-T 4757-2024 连栋塑料薄膜温室建造技术规范
- 个人征信查询授权书范本
- 2024新版实习律师协议
- 县乡教师选调进城考试《教育心理学》题库含完整答案【全优】
评论
0/150
提交评论