




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计本章重点: 数据类型 算术运算符和算术表达式 赋值运算符和赋值表达式 逗号运算符和逗号表达式第三章 数据类型、运算符和表达式C语言有四种常用数据类型:字符、整型、单精度实型、双精度实型。类型范围c h a r (字符型) 0 2 5 5i n t(整型) - 3 2 7 6 8 3 2 7 6 7f l o a t(单精度型) 约精确到6位数d o u b l e(双精度型) 约精确到1 2位数除此之外,C语言还提供了几种其他类型,包括数组、指针、结构体、共用体(联合)、位域和枚举等。这些复杂类型在以后的章节中讨论。3.1 常量和变量一、常量1. 常量的概念在程序运行过程中,其值不能被改变的量称为常量。2. 常量的分类整型常量 实型常量 字符常量 符号常量。二、变量1. 变量的概念在程序运行过程中,其值可以被改变的量称为变量。2. 变量名每个变量的名字即变量名,变量命名遵循标识符命名规则。3. 标识符和命名规则(1) 有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。(2) 有效长度:随系统而异,但至少前个字符有效。如果超长,则超长部分被舍弃。在TC V2.0中,变量名(标识符)的有效长度为个字符,缺省值为。(3) C语言的关键字不能用作变量名。(4) 特别注意C语言对英文字母的大小敏感,即同一字母的大小写,被认为是两个不同的字符。习惯上,变量名和函数名中的英文字母用小写,以增加可读性。4. 变量的定义与初始化在语言中,要求对所有用到的变量,必须先定义、后使用;且在定义变量的同时可以赋初值(初始化)。(1) 变量定义的一般格式存储类型 数据类型 变量名, 变量名2;例如:int a, b, c;(2) 变量初始化的一般格式存储类型 数据类型 变量1=值1 ,变量2=值2 ;例如:int a=3, b=4, c=5;3.2 整型数据一、整型变量1. 分类根据占用内存字节数的不同,整型变量又分为类:(1)基本整型(类型关键字为int)(2)短整型(类型关键字为short int)(3)长整型(类型关键字为long int)(4)无符号整型。分为三种,只能用来存储无符号整数(unsigned int)基本无符号整型(unsigned short)无符号短整型(unsigned long)无符号长整型2. 占用内存字节数与值域上述各类型整型变量占用的内存字节数,随系统而异。ANSI标准中的数据类型类型长度范围int1 6- 3 2 7 6 8 3 2 7 6 7short int16- 3 2 7 6 8 3 2 7 6 7long int32-2 1 4 7 4 8 3 6 4 8 2 1 4 7 4 8 3 6 4 9unsigned int160 6 5 5 3 5unsigned short80 255unsigned long320 4 2 9 4 9 6 7 2 9 63. 举例main ( )int a; short b;long c=2345678;unsigned u; a=-12; b=24; u=10;printf(%d,%d,%d,%d n, a,b,c,u);4. 说明上述各类型整型变量占用的内存字节数,随系统而异。在赋值和运算时可能溢出,导致不可确定结果。二、整型常量1. 三种表示形式整型常量即整常数,在语言中可用三种形式表示:(1)十进制。例如10、36。(2)八进制(以数字开头)。例如012。(3)十六进制(以数字+小写字母x开头)。例如0x36main ( )int a=123; int b=010+10;int c=0xffff;int d=10+010+0x10; printf(%d,%d,%d,%d n, a,b,c,d);2. 分类(1)基本整型。其数据范围与int型变量一样。(2)长整型(在数值后面加“L / l ”)。对数值很大的整型常量,可使用长整型常量表示,其取值范围可达-231231-1。例如:123l、315等。3. 说明(1)一个整型常量,可以赋给能容纳下其值的整型变量。例如,其值在-(-)的整型常量,可以赋给int型变量和long int型变量;其值在-(-)的整型常量,就只能赋给long int型变量。(2)常量无unsigned型。但一个非负整型常量,只要它的值不超过相应变量的值域(即取值范围),也可以赋给unsigned型变量。(3)(4)3.3 实型数据一、实型变量1. 分类根据占用内存字节数的不同,整型变量又分为3类:(1)单精度型。类型关键字为float。(2)双精度型。类型关键字为double。(3)长双精度型。类型关键字为long double。(用的很少)类型比特数有效数字范围float326 7-3.4*10-38 3.4*1038double6415 16-1.7*10-3081.7*10308long double12818 19-1.2*10-49321.2*1049322. 举例main ( )float a; double b;long double c=-24345345678.1234565433;a=-12.324234; b=23244.4543345; printf(%d,%d,%d n, a,b,c);二、实型常量1. 表示形式实型常量即实数,在语言中又称浮点数,其值有两种表达形式:(1)十进制形式。例如3.14、9.8。 (2)指数形式:E(e)。例如3.0+5等。2. 说明实型常量不分float型和double型。一个实型常量,可以赋给一个实型变量(float型或double型)。3.4 字符型数据一、字符常量1. 定义用一对单引号括起来的单个字符,称为字符常量。例如,A、! 等。2. 转义字符语言还允许使用一种特殊形式的字符常量,就是以反斜杠“ ”开头的转义字符。注意:如果反斜杠或单引号本身作为字符常量,必须使用转义字符:、。字符形式含义ASCII代码n换行10t水平制表9b退格9r回车13f换页12反斜杠92单引号字符39”双引号字符34ddd任意字符三位八进制xhh任意字符二位十六进制3. 举例main()printf(“ ab ct derftgn”);printf(“htibbj k);”);printf(“x4F x4B x21 n”);printf(“x15 xAB n”);执行结果:f gdeh j k! 二、字符变量1. 变量的定义和存储字符变量的类型关键字为char,占用1字节内存单元。字符变量用来存储字符常量。将一个字符常量存储到一个字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储到内存单元中。char ch1, ch2; /*定义两个字符变量:ch1,ch2*/ch1=a; ch2=b; /*给字符变量赋值*2. 说明(1)一个字符型数据,既可以字符形式输出,也可以整数形式输出。(2)允许对字符数据进行算术运算,此时就是对它们的ASCII码值进行算术运算3. 举例例1 main() char ch1,ch2;ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn”,ch1,ch2);printf(“ch1=%d,ch2=%dn”,ch1,ch2);程序运行结果:ch1=a,ch2=bch1=97,ch2=98 例2main() char ch1,ch2;ch1=a; ch2=B;/*字母的大小写转换*/printf(“ch1=%c,ch2=%cn”,ch1-32,ch2+32);程序运行结果:ch1=A,ch2=b4. 总结关于数据存储输出的总结1) 不同类型数据的存储长度不同,能表示数的有效范围也不同2) 不同类型数据赋值时应赋有效值3) 不同类型数据输出时应用相应输出格式符字符型(char)S000 0000整型(int)S000 00000000 0000实型(float)S000 00000000 00000000 00000000 0000例1main() char c=128;printf(“%c”,c);printf(“%d”,c);c=256;printf(“%c”,c);printf(“%d”,c); 例2main() int x=3.5;int y=0x7fff;printf(“%d”,x);printf(“%d”,y);y=0x8000;printf(“%d”,y);y=0x10000;printf(“%d”,y);y=0x10001;printf(“%d”,y);例3main() long x=365;printf(“%d”,x);printf(“%Ld”,x);x=0x8000;printf(“%d”,x);printf(“%Ld”,x);x=0x10000;printf(“%d”,x);printf(“%Ld”,x);x=0x110001;printf(“%d”,x);printf(“%Ld”,x);三、字符串常量1. 字符串常量的概念字符串常量是指用一对双引号括起来的一串字符。双引号只起定界作用。例如: China ,C program, YES , 33312-2341, A 等。2. 字符串的存储和长度C语言中,字符串常量在内存中存储时,系统自动在字符串的末尾加一个“串结束标志”,即ASCII码值为0的字符NULL,常用 0表示。因此在程序中,长度为n个字符的字符串常量,在内存中占有n+1个字节的存储空间。例如,字符串China有5个字符,作为字符串常量 China 存储于内存中时,共占6个字节,系统自动在后面加上NULL字符,其存储形式为:China03. 说明要特别注意字符串与字符串常量的区别,除了表示形式不同外,其存储性质也不相同,字符 A 只占1个字节,而字符串常量 A 占2个字节。9 9 93.5 各类数值型数据见的混合运算先看下面例子,理解什么是数值数据的混合运算例1main() int x=3;long y=100float z;z=x+y;x=y+23;y=z+x;printf(“%d, %d, %d”, x, y, z);不同类型数值数据混合运算时应注意:简单类型赋值给复杂类型可以,反之则有问题3.6 算术运算符和算术表达式一、算术运算符和算术表达式1. 基本算术运算符+3+5 a+b-4-6 x-y*3*53.14*s/5/25.0/2-5/3%7%4(整数求余运算)用算术运算符、括号,把数值型常量、变量连接起来就是算术表达式例main() int x; folat y;x=5/2;y=5/2;printf(“%d, %f”, x, y);x=-5/2;y=5.0/2;printf(“%d, %f”, x, y);2. 自增、自减运算符作用是使变量的值增1或减1+i+i-i-ix=I+相当于 x=I; I=I+1;x=+I相当于 I=I+1;x=I; 例main() int i=10 , j=10;int x, y; x=i+;printf(“%d, %d”, x , i);x=+jprintf(“%d, %d”, x , j);y=x-;printf(“%d, %d”, y , x);x=100y=-x;printf(“%d, %d”, y , x);例main() int I=5, j=10;I+;printf(“%d”, I);printf(“%d”, I+);printf(“%d”, +I)printf(“%d, %d”, j+, j+);3. 说明不要写有二义性的语句或晦涩语句,应写成多个简单语句。如x=y+zprintf(“%d, %d”, j+, j+)应写为多句,或用括号说明先计算哪部分3+(错误)二、算术运算符的优先级和结合性1. 优先级先乘除余,后加减 3+5%4-2*52. 结合性左结合性3*6 / 2*5右结合行a=b=33.7 赋值运算符和赋值表达式一、赋值运算符和赋值表达式1. 赋值运算符C中 “=”称为赋值运算符,它的作用是将一个表达式的值赋给一个变量。赋值运算符的一般形式为: 变量 = 赋值表达式 例如, x = 5 y = (float)5 / 2 如果表达式值类型与被赋值变量的类型不一致,系统将会把表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。2. 赋值表达式由赋值运算符,将一个变量和一个表达式连接起来的表达式,称为赋值表达式。(1)一般格式变量 = 表达式如: a=5+2(2)赋值表达式的值任何一个表达式都有一个值,赋值表达式也不例外。被赋值变量的值,就是赋值表达式的值。例如,z执行“a = 5+2”这个赋值表达式时,先把7的值赋给变量a,然后再让整个表达式的值等于a 的值3. 举例例main() int a,b;int x, y, z;a=5;b=a+2;x=y=b*10-5;printf(“%d, %d”, a, b);printf(“%d, %d”, x, y);printf(“%d”, z=a+b);二、复合赋值运算符C语言还有以下的复合赋值运算符:+=,-=,*=,/=,%=它们的具体含义如下:x += 3 等价于x=x+3 y *= x + 6等价于y=y*(x+6),而不是y=y*x+6例main() int a,b;int x, y, z;a=5;b+=a;c-=b+5;x=10; y/=2; z%=yprintf(“%d, %d”, a, b);printf(“%d, %d”, x, y);3.8 逗号运算符和逗号表达式语言提供一种用逗号运算符“,”连接起来的式子,称为逗号表达式。逗号运算符又称顺序求值运算符。1. 一般形式表达式, 表达式, , 表达式n2. 求解过程自左至右,依次计算各表达式的值,“表达式n” 的值即为整个逗号表达式的值。例如,逗号表达式“a = 3 * 5, a * 4”的值是60:先求解a = 3 * 5,得a=15;再求a * 4 = 60,所以逗号表达式的值=60。又例如,逗号表达式“(a = 3 * 5, a * 4), a + 5”的值=20:先求解a = 3 * 5,得a=15;再求a * 4=60;最后求解a + 5=20,所以逗号表达式的值=20。注意:并不是任何地方出现的逗号,都是逗号运算符。很多情况下,逗号仅
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金属船体制造工风险评估与规避考核试卷及答案
- 2025湖南株洲海事职业学校公开招聘教师25人模拟试卷及一套完整答案详解
- 公司竹藤编艺师岗位工艺作业技术规程
- 2025年2月山东领取济宁市份普通话水平测试等级证书模拟试卷及答案详解(全优)
- OZO-Cl-生命科学试剂-MCE
- Olsalazine-CoA-Olsalazine-coenzyme-A-生命科学试剂-MCE
- 2025年临沂市教育局部分事业单位公开招聘教师(22名)模拟试卷及答案详解(各地真题)
- 行政岗位专业题库及答案
- 2025年重庆小学考试题目及答案
- 小儿外科进修试卷及答案
- 《麻雀》说课课件 统编版小学语文四年级上册
- 2025全国翻译专业资格(水平)考试土耳其语八十七级笔译试卷
- 中长导管健康宣教
- 《道路勘测设计》课件-第三章 平面设计
- 档案库房管理暂行办法
- 学堂在线 英文科技论文写作与学术报告 期末考试答案
- 护理安全警示教育案例
- 青少年心理健康知识教育主题班会50
- 车辆损坏和解协议书
- 《围城》介绍课件
- 2025承包商入厂安全培训考试试题及完整答案(全优)
评论
0/150
提交评论