版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章 编制C程序的基础知识本章重点内容:2.1 常量与变量2.2 C语言的基本数据类型2.3 C语言的常用运算符和表达式运行程序第二章 编制C程序的基础知识第一节 常量与变量一、常量程序运行过程中保持不变的值运行程序二、变量程序运行过程中值可以改变的量1、标识符 把给程序中的实体变量、常量、函数、数组、结构体以及文件所起的名字称为标识符。简单的说标识符就是一个名字。标识符的命名规则 只能由英文字母、数字和下划线组成,且第一个字符必为英文字母或下划线不允许使用关键字作为标识符的名字 标识符区分大小写 标识符命名应以直观且易于拼读为宜 有意义的标识符长度为前8个字符 【例2.1】找出下列符号中合
2、法的标识符。 3aB abc a.b b int next a3B ok? _swtch 2、变量定义形式:类型 变量名1,变量名2,; 其中,方括号内的内容为可选项,可以同时声明多个相同类型的变量,它们之间需要用逗号分隔。例如:float a,b,c; 定义:变量是在程序执行过程中可以改变、 可以赋值的量。四种数据类型第二节 C语言的基本数据类型 数据类型基本类型指针类型构造类型 空 类 型整型字符型实型(浮点型)枚举类型数组类型结构体类型共用体类型单精度型双精度型1、整型常量有以下几种分类方法 按进制分类:分为十进制、八进制和十六进制 一、整型数据 分类表示方法说 明举 例十进制一般表示形
3、式逢十进一100表示十进制数100八进制以0开头逢八进一0100表示八进制数100十六进制以0 x开头逢十六进一0 x100表示十六进制数100按长短分类:分为长整型、无符号整型和短整型。 1、整型常量有以下几种分类方法 分类表示方法所占字节数举 例短整型一般表示形式2100表示短型整数100长整型在整型量后面加上一个字母l或L4100l或100L表示长整型数100无符号整型在整型量后面加上一个字母u或U2100u或100U表示无符号整型数100 * 八进制的数码范围为07; 018 * 十六进制的数码除了数字09外, 还使用英文字母a f (或A F)表示1015。 如:0 x1e 注意!二
4、、整型(采用定点整数的存储格式,只能表示纯整数)整型常量:(1) 十进制形式:与数学上的整数表示相同; 例如: 12, -100, 0 (2) 八进制形式:在数码前加数字0; 例如: 012=1*81+2*80=10(十进制) (3) 十六进制形式:在数码前加0X(数字0和字母X)。 例如: 0 x12=1*161+2*160=18(十进制)2.定义整型变量的标志是int。 类 型所占字 节数数的取值范围举 例signed int2-3276832767int x1,x2;unsigned int2065535unsigned int y1,y2signed short23276832767s
5、hort z1,z2;unsigned short2065535unsigned short f1,f2signed long42147483648 2147483647long h1,h2;unsigned long404294967295unsigned long k1,k2二、实型数据1、实型常量有两种表示形式: 十进制小数形式和指数形式。 表示方法所占字节数数值范围说 明举 例小数 形式410381038由数字和小数点组成0.123、.123、 123.指数形式410381038由尾数、字母e或E、指数组成 1e1、10e2、 100e32、实型变量 类 型所占字节数有效数字数的取值范
6、围 举 例float46710371038float x1,x2;double815161030710308double y1,y2long double101819104931104932long double z1,z2;main( ) int a,b; /*定义a、b为整型变量*/ unsigned int t; /*定义t为无符号整型变量*/ float x,y; /*定义x、y为实型变量*/ a=1;b=-2;t=5; x=a+b;y=x+t; printf(%f,%f,x,y); 【例2.2】变量的定义与使用【例2.3】整型数据的运算。程序代码如下:#include stdio.h
7、main() int a,b; a=32767; b=a+1; printf(%d,%dn,a,b);程序的运行结果为:32767,32768(注意:turbo C 下运行结果为-1)#include stdio.hmain() float a=12.3; printf(%fn,a); /*a以十进制小数形式输出*/ printf(%en,a); /*a以指数形式输出*/程序的运行结果为:12.3000001.230000e+001【例2.4】实型数据的不同表示 。【例2.5】实型变量的定义与使用 。#include stdio.hmain() float a=12.3; printf(%fn
8、,a); /*a以十进制小数形式输出*/ printf(%en,a); /*a以指数形式输出*/程序的运行结果为:12.3000001.230000e+001三、字符型数据 1、C语言中有两种类型的字符常量: 普通字符:用单引号括起来的单个字符。 特殊字符:以“”开头的具有特殊含义 的字符转义字符。 常用的转义字符 字符形式说 明n换行t横向跳格(即跳到下一个tab位置)v竖向跳格b退 格r回 车f走纸换页反斜杠字符“”单引号(撇号)字符0空字符”双引号字符ddd1到3位8进制数所代表的字符xhh1到2位16进制数所代表的字符2、字符串常量由双引号括起来的字符序列 字符常量与字符串常量的区别有
9、如下几点: 字符常量与字符串常量的表示形式不同。 字符常量通常可以给字符型变量赋值, 而字符串通常被存放在一个字符数值中。 字符串常量要有一个结束符,而字符常 量没有结束符,它只有一个字符。 字符常量与字符串常量的运算不同。3、字符变量的定义形式,即char类型 所占字节数说明数据的取值范围 举例char1存放单 个字符 128127char c1,c2;【例2.7】转义字符的使用。程序代码如下:#include stdio.hmain() printf(abtcden); printf(f101n);程序的运行结果为:ab cdefA【例2.9】将小写字母转换为大写。程序代码如下:#incl
10、ude stdio.hmain() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(%c %cn,c1,c2);程序的运行结果为:A B运算符的分类运算符按其操作数个数分为3类: 单目运算符(一个操作数)、双目运算符 (两个操作数)和三目运算符(三个操作数)运算符按其优先级的高低分为15类: 优先级最高的为1级,其次为2级等等运算符按其功能分为: 算术运算符、关系运算符、逻辑运算符、 赋值运算符、逗号运算符等等第三节 C语言的常用运算符和表达式 一、算术运算符及其表达式 运算符名称运算规则运算对象对象个数运算结果结合方向举 例表达式值*乘乘
11、法整型或实型双目整型或实型从左向右2.5*3.07.5/除除法2.5/50.5%模整数取余整型整型10%31+加加法整型或实型整型或实型2.5+1.23.7-减减法二、算术运算符和表达式基本算术运算符: + - * / %结合方向:从左向右优先级: - -* / % - + - (1) (2) (3)说明:“-”可为单目运算符时,右结合性两整数相除,结果为整数%要求两侧均为整型数据例 5/2 = -5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2例 5/2 = 2 -5/2.0 = -2.5例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0
12、 5.5%2 ()2、自反算术赋值运算符 a=2 a=4; a-=2;a-=b a=a-b自反减-=a=6a=4;a+=2;整型或实 型整型或实型 a+=b a=a+b自反加+=a=0a=4;a%=2;整 型整型a%=b a=a%b自反模%=a=2a=4;a/=2;a/=b a=a/b自反除/= a=8a=4;a*=2;从右向左整型或实型双目整型或实型a*=b a=a*b自反乘*= 表达 式值举例结合方向运算结果对象个数运算对象运算规则 名称运算符复合的赋值运算符1复合运算符:10种 +=,=,*=,/=,%=, ,&,| , 位运算(左移、右移、按位与、按位或、按位异或) 例如: a+=3
13、相当于 a=a+3 x*=y+8 相当于 x=x*(y+8) x%=3 相当于 x=x%32意义: 简化程序,使程序精炼。 提高编译效率。例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2)/表达式值为5,a,b,c值为5/ b=5;a=5/表达式值11,c=6,a=11/表达式值10,a=10,b=4,c=6/表达式值5,a=5,b=10,c=2赋值表达式1概念: 由赋值运算符将一个变量和一个表达式连接起来的式子。2一般形式: 变量赋值运算符表达式例 a=b=c=5 (自右向左右结合, 注意:连续赋值在这里的表达式中是允许的,但在
14、前面讲的定义语句中是不可以的。) 赋值运算说明:结合方向:自右向左优先级:左侧必须是变量,不能是常量或表达式赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型赋值表达式的值与变量值相等,且可嵌套例: a=12; a+=a-=a*a例: int a=2; a%=4-1; a+=a*=a-=a*=3; /a=-264 等价于a=a+(a=a-(a*a)/a=0 等价于a=a+(a=a*(a=a-(a=a*3)【例2.11】复合的赋值运算符的应用。已知a=12,n=5,求下列表达式的值。 a+=a; /*相当于a=a+a;*/ a-=2; /*相当于a=a-2;*/ a*=2+3; /*相
15、当于a=a*(2+3);*/ a/=a+a; /*相当于a=a/(a+a);*/ a%=(n%=2); /*相当于n=n%2,得到n值为1,再计算a=a%n;*/ a+=a-=a*=a; 上述表达式的计算结果分别为24,10,60,0,0,03、自增和自减运算符运算符 名称运算规则运算对象对象个数运算结果结合方向举 例表达式值+增1(前缀)先增值后引用整型、实型或字符型单目同运算对象的数据类型从右 向左a=2;x=+a;x=3+增1(后缀)先引用后增值a=2;x=a+;x=2-减1(前缀)先减值后引用a=2;x=-a;x=1-减1(后缀)先引用后减值a=2;x=a-;x=2自增、自减运算符+
16、-作用:使变量值加1或减1种类:前置 +i, -i (先执行i+1或i-1,再使用i值)后置 i+,i- (先使用i值,再执行i+1或i-1)例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; /k=4,j=4/k=3,j=4/4/3/c=20,a=4/c=15,a=4说明:+ - 不能用于常量和表达式,如5+, (a+b)+ -结合方向: 自右向左优先级:- + - -* / % -+ - (1) (2) (3)4、正负号运算符 运算符名
17、称 运算 规则运算 对象对象个数运算结果结合方向举 例表达式值+正号取原值整型或实型单目整型或实型从右向左a=2;t=+a;t=2-负号取负值a=2;t=-a;t=-25、强制类型转换运算符运算符名称运算 规则 运算 对象对象个数运算结果结合方向 举 例表达式值(类型)类型转换转换 为指定类型整型或实 型单目整型或实型从右向左float x=2.3;(int)x;2强制类型转换运算符: 将一个表达式转换成所需类型。 一般形式: (类型名)(表达式) 例 (int) x (int)(x+y) (int)x+y (double)(3/2) (int)3.6 说明:强制转换得到所需类型的中间变量,原
18、变量类型不变 【例2.13】 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 结果:x=3.600000,i=3二、关系运算符及其表达式 运算符 名 称运算规则运算对象对象个数运算结果结合方向举 例表达式值小于满足则为真,结果为1;不满足则为假,结果为0整型、实型或字符型双目逻辑值(整型)从左向右a=1;b=2;ab;1=小于或等于a=1;b=2;a大于a=1;b=2;ab;0=大于或大于a=1;b=2;a=b;0=等于a=1;b=2;a=b;0!=不等于a=1;b=2;a!=b;1关系运算符和关系表达式(一)、
19、关系运算符及其优先次序1、C语言的6种关系运算符 = = = != 2、优先次序 前4种运算符的优先级相同,后两种也相同,且前4种高于后2种。 关系运算符优先级低于算术运算符 关系运算符的优先级高于赋值运算符例: ca+b c(a+b) ab!=c (ab)!=c a= =bc a= =(bc a=(bc) 注:即 相当于 算术运算符 关系运算符 赋值运算符(二)、关系表达式1概念:用关系运算符将两个表达式连接起来的式子,称关系表达式。例:ab, (a=3)(b=5), ab)(bb表达式的值为1(ab)=c表达式的值为1b+cb d的值为1f=abcf的值为0【例2.14】关系运算符的计算。
20、若a=1,b=2,c=3,x=4,y=5;,请计算下列表达式的值。(1)ca+b (2)ab=c(3)a=bc(5)ab&xy(6)(a=b)|(x=y)(7)(!a)|(ab)(8)a&b上述表达式的计算结果分别为0,0,1,0,0,0,0,1三、逻辑运算符及其表达式运算符名称运算规则运算对象对象个数运算结果结合方向举 例表达式值!非逻辑非整型、实型或字符型单目逻辑值(整型)从右向左a=1;!a;0&与逻辑与双目从左向右a=1;b=0;a&b;0|或逻辑或a=1;b=0;a|b; 1C语言有三种基本的逻辑运算(布尔运算): 与 (逻辑乘) 用&表示,(相当于其它语言中的AND) 或 (逻辑加
21、) 用 | | 表示 (相当于其它语言中的 OR) 非 (逻辑非) 用 ! 表示(相当于其它语言中的NOT) 逻辑运算的结果值有两个: false(假)、 true(真)规则:设有两个布尔量x1,x2 与运算:x1 & x2 当x1,x2均为真时,x1 & x2 结果为真,否则为假;或运算:x1 | x2 当x1,x2二者其中有一个为真时,结果即为真,只有均为假时,才为假;非运算:! x1当x1为真时, 结果为假;当x1为假时,结果为真。逻辑运算符与逻辑表达式根据上面的运算规则考虑: a b a & b a | b ! atrue truefalse truetrue falsefalse f
22、alse true truefalse falsetruetrue falsetruefalse falsefalsetrue真 值 表1逻辑运算符 &逻辑与 二目(元)运算符 |逻辑或 !逻辑非一目(元)运算符说明:2优先级 ! & |,即“!”为三者中最高的。 逻辑运算符中的“&”和“|”低于关系运算符,“!”高 于算术运算符。 !(非)算术运算符关系运算符&和|赋值运算符 高低例:a=4,b=5!a值为0a&b 值为1a|b值为1!a|b值为14&0|2值为1 在进行逻辑表达式的求解中,并不是所有的逻辑运算都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。 例
23、:a&b&c 0 非0 0 非0 0 非0 0abc四、赋值运算符及其表达式 运算符名称运算规则运算对象对象个数运算结果结合方向举例表达式值 赋值给变量赋值任何类型双目任何类型从右向左a=5;5五、逗号运算符及其表达式 运算符名称运算规则运算对象对象个数运算结果结合方向举 例表达式值,逗号最后一个表达式的值表达式双目最后一个表达式的值从左向右2*3,5+7;12逗号运算符和逗号表达式一、逗号运算符又称 顺序求值运算符二、一般表达式: 表达式1,表达式2三、求解过程: 先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值。例: a=3*5,a*4 a的值为15,右边表达式的值为60 注意
24、: 在c语言中,逗号优先级最低(低于赋值运算)注意:1、应用逗号表达式的目的一般是想得到各个表达式的值,常用于循环的FOR语句中,而并非一定需要和使用整个逗号表达式的值。如例1、2。 2、并非所有的地方出现的逗号都作为逗号表达式看待,在函数中只是起参数分隔的作用。 例如:printf(%d,%d, a,b);区别: printf(%d,%d,%d,(a,b),a,b); 此句中(a,b)则是逗号表达式,其值为b的值。例 a=3*5,a*4 a=3*5,a*4,a+5例 x=(a=3,6*3) x=a=3,6*a例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); p
25、rintf(“%d,%d,%d”,(a,b,c),b,c); /赋值表达式,表达式值18,x=18/a=15,表达式值60/a=15,表达式值20/逗号表达式,表达式值18,x=3/1,2,3/3,2,3/赋值表达式,表达式值18,x=18【例2.15】逗号运算符的使用。(1)3+5,6+8(2)a=3*5,a*4(3)a=3*5,a+4,a+5(4)x=(a=3,6*3)(5)x=a=3,6*a上述表达式的计算结果分别为14,60,20,18,18例:/*ch2_6.c*/#include main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x);运行结果:x=3六、各类型数据之间的转换 intdoubleunsignedlongfloatchar,short高低 float a=2.0; int b =6,c =3; a*b/c -1.5 +a +fabs(-5)12.0/354.0 - 1.52.5 + 97(int)99.5 + 5104.5(double)思考 int a=1,b=2; 表达式a/b+3的结果是多少? int a=10000,b=30000; 表达式a+b的结果是多少? 如何修改? double floatunsigne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《学记》的教育思想及其当代价值国培
- 《建筑设备采暖》课件
- 2026年大学教育学院辅导员年终述职报告课件
- 《应激性心肌病》课件
- 2026 年秋冬季流感预防:学生流感防护技能训练课件
- 2026年四川省七年级历史第9课同步练习题
- 2026 年秋冬季流感预防:校园流感消毒药剂使用课件
- 春季中医药养生保健知识讲座
- 精神病关爱帮扶小组会议总结
- 管网运维管理办法实施细则
- 2025年4月自学考试中国古代文学史(二)00539试卷及答案解释完整版
- GB/T 12823.2-2026摄影和图形技术密度测量第2部分:透射密度的几何条件
- 2026中国养蚯蚓行业市场现状供需分析及投资评估规划分析研究报告
- 7 培养德智体美劳全面发展的社会主义建设者和接班人 探究积累(课件)
- 《建筑施工安全》门窗安装专项安全培训
- 超声引导关节腔注射
- 2026陕西事业单位综合应用能力真题
- 建筑业10项新技术深度解读
- 2026年及未来5年市场数据中国留学金融行业市场全景监测及投资前景展望报告
- 2026新疆新业有资产经营(集团)有限责任公司招聘备考题库及答案详解(夺冠系列)
- 神经外科手术中神经电生理监测的文献回顾
评论
0/150
提交评论