常量、变量、运算符和表达式课件_第1页
常量、变量、运算符和表达式课件_第2页
常量、变量、运算符和表达式课件_第3页
常量、变量、运算符和表达式课件_第4页
常量、变量、运算符和表达式课件_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1、常量、变量、运算符和表达式1第二章常量、变量、运算符和表达式常量、变量、运算符和表达式知识回顾 C语言有什么特点 如何书写编译并运行C程序 printf()函数常量、变量、运算符和表达式3内容摘要 C语言的数据类型 常量介绍 如何使用变量来存储信息 如何声明和初始化变量 运算符与表达式 类型转换常量、变量、运算符和表达式4C语言的数据类型 数据类型是我们对数据的描述 例如 数字 整数:5,123,-9 实数:23.56,6.78,-0.12 字符 a,f等等常量、变量、运算符和表达式5C语言的数据类型 数数据据类类型型指指针针类类型型空空类类型型( (v vo oi id d) )基基本本类类

2、型型组组合合类类型型整整型型( (i in nt t) )字字符符型型( (c ch ha ar r) )实实型型( (浮浮点点型型) )单单精精度度型型双双精精度度型型结结构构联联合合数数组组枚枚举举常量、变量、运算符和表达式6数据类型描述 类类型型关关键键字字字节字节数数值值范范围围字符字符charchar1 1-128-128127127短整型短整型short int (short int (略为略为short)short)2 2-32767-327673276732767整型整型intint4 4-2147483647-214748364721474386472147438647长整型

3、长整型long int (long int (略为略为 long)long)4 4-2147483647-214748364721474386472147438647无符号字符无符号字符unsigned charunsigned char1 10 0255255无符号短整型无符号短整型unsigned shortunsigned short2 20 06553565535无符号整型无符号整型unsigned int unsigned int 4 40 042949672954294967295无符号长整型无符号长整型unsigned longunsigned long4 40 04294967

4、2954294967295单精度浮点数单精度浮点数floatfloat4 41.2E-381.2E-383.4E383.4E381 1双精度浮点数双精度浮点数doubledouble8 82.2E-382.2E-381.8E3081.8E3082 21 1大概范围,精度为大概范围,精度为7 7位位2 2大概范围,精度为大概范围,精度为1919位位常量、变量、运算符和表达式7数据类型说明 windows为32位计算机环境 上表给出的是以此为例的各数据类型占用的内存空间字节数和表示的数值范围 可以利用sizeof()函数获得内存空间字节数#include “stdio.h”void main()i

5、nt a; /char a; short a; printf(“%d”,sizeof(a);常量、变量、运算符和表达式8常量介绍 不同类型的数据需要采用不同的方式来存储 C语言中有两种存储数值的方式 变量 常量 值不能被改变的量被称为常量 字面常量 符号常量常量、变量、运算符和表达式9常量介绍 字面常量 字面常量是指在源代码中直接输入的值 例如: int age=25;/整型常量 float score=85.5;/浮点数常量 char sex=f;/字符常量 char name10=”lucy”;/字符串常量 其中25、85.5、f、 ”lucy”是字面常量常量、变量、运算符和表达式10常量

6、介绍 整型常量的表示方式 首位不为0的常量被视为10进制整数 十进制常量可以包含数字09,并可以在最前面加上正号或负号(正号可省略) 以0打头的常量被视为八进制整数 八进制常量可以包含数字07,并可以在前面加上正号或负号 以0 x或OX打头的常量被视为十六进制整数 十六进制常量可以包含数字09和字母AF,并可以在前面加上正号或负号常量、变量、运算符和表达式11常量介绍 符号常量 在程序中用一个符号来表示一个常量 这个符号就被称为符号常量 例如: 圆周率的值(3.14) C语言中使用预编译处理命令#define来定义符号常量 #define PI 3.14 /注意:#define语句不以分号结尾

7、 则可以这样计算圆的面积:area=PI*r*r 常量不能修改,程序中写 PI=3.1415 这样会引发错误 常量、变量、运算符和表达式12变量介绍 变量的概念 程序运行中,其值可以被改变的量是变量 变量是计算机内存中一个被命名的数据存储位置 使用变量名时实际上用的是存储在这里的数据的值常量、变量、运算符和表达式13变量介绍 变量的类型与数据类型是对应的 不同数值需要内存空间不同,需要不同变量类型 例如: 小型整数(如6、250和-18)需要的内存较少 计算机整数运算速度非常快 大型整数和浮点数(如5000000000、或0.6)需要较多存储空间,执行数学运算所需时间更长 使用合适的变量类型,

8、可确保程序运行效率提高常量、变量、运算符和表达式14变量示例#include void main() int a,b,c,sum; /声明四个整型变量,分别存放三个数及它们的和printf(Enter three numbersn); /提示用户的信息scanf(%d%d%d,&a,&b,&c); /分别读取三个整型数,每一个都要用一个%dsum=a+b+c; /=做赋值,求和printf(n sum=%dn,sum); /打印输出结果 常量、变量、运算符和表达式15变量的定义及初始化 变量定义 任何变量都必须遵守先定义后使用的原则 变量定义的一般形式 存储类别 数据类

9、型 变量名1,变量名2;存储类别不是必须要求声明的部分,后面章节中将讲到这个概念 int num1,num2; /定义num1,num2为整型变量 float avg; /定义avg为实型变量 char ch1,ch2; /定义ch1,ch2为字符型变量常量、变量、运算符和表达式16变量的定义及初始化 变量定义的位置 定义在哪里是至关重要的 在哪里定义决定着这个变量在哪些范围内有效 现学习阶段,可将所有变量声明放在一起,并放置于main()函数的主体语句中的前面常量、变量、运算符和表达式17变量的定义及初始化 变量的初始化 定义变量时指示计算机为变量留出存储空间 变量值并没有指定,可能为随机值

10、 使用变量前,一定要将其初始化为一个确定的值常量、变量、运算符和表达式18变量的定义及初始化 变量初始化方法 定义变量的同时进行赋初值的操作 定义变量后,使用赋值语句来初始化变量 int num1=34,num2; num2=67; 定义了num1和num2两个整型变量 定义的同时初始化num1为34 使用了等号“=” 赋值运算符将67赋给变量num2常量、变量、运算符和表达式19变量的定义及初始化 初始化注意事项 不要将变量初始化为该变量数据类型所表达的值域允许范围之外的值 short int weight=100000;/错误 C编译器也许不会发现这种错误,因此程序将被编译和链接,但当程序

11、运行时,结果将可能与预期的不同常量、变量、运算符和表达式20变量的定义及初始化 初始化原则 了解不同类型变量占用的字节数,不要试图将超出变量取值范围的值赋给变量 声明变量时,应尽可能对它进行初始化 存储整型数据时,尽量不要使用float或double变量,会降低效率 不要将负值赋给unsigned变量常量、变量、运算符和表达式21变量的定义及初始化 特殊的char数据类型 C语言使用char数据类型来存储字符。 例如5,*,#, 都是字符 计算机内存中,所有数据都以数值方式存储 人们为每个字符进行了相对应的数值编码 称为ASCII字符集(ASCII表示美国信息交换标准码) 例如:字母a的ASC

12、II码为97。那么,当在char变量中存储字符a时,实际存储的是97常量、变量、运算符和表达式22变量的定义及初始化 char变量处理 使用char变量之前必须声明;也可以在声明的同时对它进行初始化 char ch,ch1,b=f; char code=3; 函数printf()可用于打印字符和数字 格式字符串%c指示printf()打印一个字符,而%d指示它打印一个十进制整数常量、变量、运算符和表达式23变量的定义及初始化#include stdio.hvoid main() char ch1=a; char ch2=90; printf(作为一个字符ch1=%c, ch1); printf

13、(n作为一个数字ch1=%d, ch1); printf(n作为一个字符ch2=%c, ch2); printf(n作为一个数字ch2=%dn, ch2);常量、变量、运算符和表达式24问题 上半讲结束,提出问题: 如何编写程序定义并输出我们的班号与拼音姓名?常量、变量、运算符和表达式25运算符与表达式 什么是运算符? 运算符是一个命令编译器对一个或多个操作数执行某种运算的符号 类似于“+”、“-”等 操作数是运算符对其执行操作的东西 类似于“1”、“a”等 例如:a+1中,“+”为运算符, “a”、“1”为操作数常量、变量、运算符和表达式26运算符与表达式 什么是表达式? 表达式可以是任何计

14、算结果为数值的东西 有各种复杂程度不同的表达式 最简单的表达式只包含一项:一个简单变量、字面常量或符号常量 例如:PI:程序中定义的符号常量 复杂表达式由多个简单的表达式组成 表达式之间用运算符连接 例如:3*9、a=4+9等赋值语句常量、变量、运算符和表达式27运算符与表达式 赋值运算符 赋值运算符是一个等号() 编程中的用途与数学中的“相等”是不同的 例如下面的语句: int a =3,b; b = a; 指的是将a的值“3” 赋给b,而不是说a等于b常量、变量、运算符和表达式28运算符与表达式 赋值运算符的格式 变量=表达式 赋值语句的右边可以是任何表达式(expression) 但左边

15、必须是一个变量名 例如: int a=2,b=3,c; c=a*2+b; 该句被执行时,将计算表达式a*2+b的值,并将结果7赋给变量c常量、变量、运算符和表达式29运算符与表达式 算术运算符 算术运算符是执行诸如加、减等数学运算的 2种单目算术运算符 5种双目算术运算符 注:“目”就是代表参与运算的操作成员数量常量、变量、运算符和表达式30运算符与表达式 单目算术运算符 单目数学运算符是指完成此类运算只需要一个操作数运算符运算符符号符号操作操作范例范例递增递增+将操作数加将操作数加1 1+x+x、x+x+递减递减-将操作数减将操作数减1 1-x-x、x-x-常量、变量、运算符和表达式31运算

16、符与表达式 递增与递减运算符 只能用于变量,而不能用于常量 分别将操作数加1和减1 +a; 等价于 a=a+1; -b; 等价于 b=b-1; 这两个运算符放在操作数的前面(前缀模式),和放在操作数的后面(后缀模式)时,效果却不等价 采用前缀模式时,先执行递增或递减运算,再计算表达式的值 采用后缀模式时,先计算表达式的值,然后再执行递增或递减操作常量、变量、运算符和表达式32运算符与表达式#include stdio.hvoid main() int a=8,b; b=a+; /先取a的值做赋值给b,再执行a=a+1printf(a=%d,b=%dn,a,b);常量、变量、运算符和表达式33运

17、算符与表达式#include stdio.hvoid main() int a=8,b; b= +a; /先执行a=a+1,再取a的值做赋值给bprintf(a=%d,b=%dn,a,b);常量、变量、运算符和表达式34运算符与表达式 双目算术运算符 双目运算符需要两个操作数运算符运算符符号符号操作操作范例范例加法加法+ +将两个数相加将两个数相加a+ba+b减法减法- -将第将第1 1个操作数减去第个操作数减去第2 2个操作数个操作数a-ba-b乘法乘法* *将两个操作数相乘将两个操作数相乘a a* *b b除法除法/ /将第将第1 1个操作数除以第个操作数除以第2 2个操作数个操作数a/b

18、a/b求模求模% %第第1 1个操作数除以第个操作数除以第2 2个操作数得到的余数个操作数得到的余数a%ba%b常量、变量、运算符和表达式35运算符与表达式 “+”、“-”、“*”、“/”大家都很熟悉 求模(取余)运算 返回第一个操作数除以第二个操作数后得到的余数 该运算符要求两边的操作数都是整型 例如: 10%3=1 (商为3,余数为1) 25%5=0 (商为5,余数为0) 2%7=2 (商为0,余数为2)常量、变量、运算符和表达式36运算符与表达式 求模运算符应用广泛 要求用户输入一个三位数的整数,倒序输出,478变874 #include stdio.h void main() int

19、a,b,c,d; printf(请输入三位数的整数); scanf(“%d”,&a); /假设输入了456赋给变量a printf(输入的数字是:%dn,a); b=a%10; /利用%符号得到了个位数字6,将该值赋给变量b a=a/10; /除号的两边都是整数时,做整除,456被10整除变成了45 c=a%10; /45%10 后得到了个位数字5,将该值赋给变量c a=a/10; /a再次做整除,45被10整除变成了4 d=a%10; /4%10=4赋给了变量 d printf(倒序后为:%d%d%dn,b,c,d); 常量、变量、运算符和表达式37运算符与表达式 运算符优先级和圆括

20、号在包含多个运算符的表达式中,运算的执行顺序是什么样的呢? 例如: x=10-5*3+2;常量、变量、运算符和表达式38运算符与表达式 运算符优先级 有关运算执行顺序的规则 每个运算符都有一个优先级 计算表达式时,先执行优先级高的运算符 下表中的“1” 表示优先级最高运算符运算符相相对优对优先先级级+、-1 1* *、/ /、% %2 2+ +、- -3 3常量、变量、运算符和表达式39运算符与表达式 表达式计算顺序 表达式中包含多个优先级相同的运算符,则按从左到右的顺序依次计算 例如:15/3*4%3 表达式的结果为2(15/3=5 ,5*4=20,20%3=2) 如果我们希望先计算乘法再执

21、行其它运算呢? 改写为:15/(3*4)%3 结果变成1(3*4=12 ,15/12=1,1%3=1) 使用圆括号可以改变计算顺序 在表达式中,可以使用多个圆括号,并且可以嵌套 当圆括号被嵌套时,从内向外计算表达式常量、变量、运算符和表达式40运算符与表达式 表达式:num=10*(22/(6-4)-7); 表达式的计算顺序如下: 1.计算最里面括号内的表达式6-4,结果为2。表达式变为: 10*(22/2-7) 2.接着计算表达式22/2,结果为11,表达式变为: 10*(11-7) 3.计算括号内的表达式11-7,结果为4,表达式变为: 10*4 4.最后结果为num=40 。 通常会在书

22、写表达式时,为清晰思路,即使不改变运算符优先级,也会使用圆括号 注意:圆括号必须成对出现,否则编译器将产生错误消息常量、变量、运算符和表达式41运算符与表达式 关系运算符 关系运算符用于比较表达式 例如比较两个数字大小时等问题 关系运算符所组成的表达式的结果为真true(1)或假false(0)常量、变量、运算符和表达式42运算符与表达式 关系运算符项目表运算符运算符符号符号提出的问题提出的问题范例范例等于等于=第一个操作数是否等于第二个操作数?第一个操作数是否等于第二个操作数?a=b大于大于第一个操作数是否大于第二个操作数?第一个操作数是否大于第二个操作数?ab小于小于第一个操作数是否小于第

23、二个操作数?第一个操作数是否小于第二个操作数?a=第一个操作数是否大于或等于第二个操作数?第一个操作数是否大于或等于第二个操作数?a=b小于等于小于等于=第一个操作数是否小于或等于第二个操作数?第一个操作数是否小于或等于第二个操作数?ab); printf(%dn,a=b); printf(%dn,ab); printf(%dn,a=b);常量、变量、运算符和表达式44运算符与表达式 关系运算符注意事项: C语言将真(true)解释为1,假(false)解释为0。 不要将描述相等关系的关系运算符“=”和赋值运算符“=”混淆 用户输入的数据被用于表达式或结果为逻辑值的语句中时,数据将被解释为tr

24、ue或false,解释的规则如下:0表示false,所有的非0值表示true 关系运算符的正确理解对于我们后面学习条件语句的使用非常重要常量、变量、运算符和表达式45运算符与表达式 关系运算符的优先级 使用关系运算符的表达式中,也可用圆括号来改变优先级运算符运算符相相对优对优先先级级 、= 、=1 1!=!=、=2 2常量、变量、运算符和表达式46运算符与表达式 关系运算符的优先级低于算术运算符 例子: int a=3,b=4,c=4,d=2; num=a+bc*d 将先计算c*d=8 再计算a+b=7 然后比较两个值的大小78? 结果为0赋给num常量、变量、运算符和表达式47运算符与表达式

25、 逻辑运算符 现实中,评价一个问题时通常要多方参考 例如: 评选优秀学员的条件 出勤率达到95%以上 各门课程的平均分在90分以上 要用到逻辑运算符把两个条件表达式进行组合常量、变量、运算符和表达式48运算符与表达式 三种逻辑运算符运算符运算符符号符号范例范例与(与(ANDAND)&exp1 & exp2exp1 & exp2或(或(OROR)|exp1 | exp2exp1 | exp2非(非(NOTNOT)! !exp1!exp1常量、变量、运算符和表达式49运算符与表达式 逻辑运算符的运算规则 exp1 & exp2 当且仅当exp1和exp2表达式的值都

26、为真时,整个表达式的结果为真。 exp1 | exp2 当且仅当exp1和exp2表达式的值都为假时,整个表达式的结果为假。 !exp1 当exp1本来为真时,结果为假;本来为假时,结果为真。常量、变量、运算符和表达式50运算符与表达式#include stdio.hvoid main() float a; /代表学生的出勤率 float c,ja; /c 代表c语言的成绩,ja代表java课程的成绩 float s; / 代表学生的平均分数 printf(请输入该学生的出勤率); scanf(%f,&a); printf(请输入该学生的c成绩); scanf(%f,&c);

27、printf(请输入该学生的java成绩); scanf(%f,&ja); s=(c+ja)/2; /计算学生的平均分数,存放于变量s中 if(a0.95&s90) /如果出勤率大于95%,并且平均分大于90 printf(有资格参加评选n); else /如果不满足以上条件,则执行else里的部分 printf(请继续努力n); /两个条件有任何一个不满足时,将执行该语句 常量、变量、运算符和表达式51运算符与表达式 逻辑运算符的优先级 “!”是单目运算符 优先级高于“&”和“|”和所有的关系运算符及所有的双目数学运算符 运算符“&” 的优先级高于“|” 它们的优先级低于所有的数学运算符和关系运算符 同样也可以使用圆括号来改变计算顺序常量、变量、运算符和表达式52其他运算符 复合赋值运算符 复合赋值运算符是指将双目算术运算符和赋值运算符组合在一起, 提供了一种简单的方式 a+=3; 等价于a=a+3; a*=3; 等价于a=a*3; a/=3; 等价于a=a/3; a-=3; 等价于a=a-3; a%=3; 等价于a=a%3;常量、变量、运算符和表达式53其他运算符 条件运算符 C语言中唯一一个三目运算符(即

温馨提示

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

最新文档

评论

0/150

提交评论