常量变量运算符和表达式.ppt

上传人:wuy****n92 文档编号:91837382 上传时间:2023-05-28 格式:PPT 页数:58 大小:338.50KB
返回 下载 相关 举报
常量变量运算符和表达式.ppt_第1页
第1页 / 共58页
常量变量运算符和表达式.ppt_第2页
第2页 / 共58页
点击查看更多>>
资源描述

《常量变量运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《常量变量运算符和表达式.ppt(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第二章常量、变量、运算符和表达式1知识回顾C语言有什么特点如何书写编译并运行C程序printf()函数内容摘要C语言的数据类型常量介绍如何使用变量来存储信息如何声明和初始化变量运算符与表达式类型转换3C语言的数据类型数据类型是我们对数据的描述例如数字整数:5,123,-9实数:23.56,6.78,-0.12字符a,f等等4C语言的数据类型 5数据类型描述 类型型关关键字字字节字节数数值范范围字符字符charchar1 1-128-128127127短整型短整型short short int int(略略 为为short)short)2 2-32767-327673276732767整型整型i

2、ntint4 4-2147483647-214748364721474386472147438647长整型长整型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

3、无符号长整型无符号长整型unsigned longunsigned long4 40 042949672954294967295单精度浮点数单精度浮点数floatfloat4 41.2E-381.2E-383.4E383.4E381 1双精度浮点数双精度浮点数doubledouble8 82.2E-382.2E-381.8E3081.8E3082 21 1大概范围,精度为大概范围,精度为7 7位位2 2大概范围,精度为大概范围,精度为1919位位6数据类型说明windows为32位计算机环境上表给出的是以此为例的各数据类型占用的内存空间字节数和表示的数值范围可以利用sizeof()函数获得内存

4、空间字节数#include“stdio.h”void main()int a;/char a;short a;printf(“%d”,sizeof(a);7常量介绍不同类型的数据需要采用不同的方式来存储C语言中有两种存储数值的方式变量常量值不能被改变的量被称为常量字面常量符号常量8常量介绍字面常量字面常量是指在源代码中直接输入的值例如:int age=25;/整型常量float score=85.5;/浮点数常量char sex=f;/字符常量char name10=”lucy”;/字符串常量其中25、85.5、f、”lucy”是字面常量9常量介绍整型常量的表示方式首位不为0的常量被视为10进

5、制整数十进制常量可以包含数字09,并可以在最前面加上正号或负号(正号可省略)以0打头的常量被视为八进制整数八进制常量可以包含数字07,并可以在前面加上正号或负号以0 x或OX打头的常量被视为十六进制整数十六进制常量可以包含数字09和字母AF,并可以在前面加上正号或负号10常量介绍符号常量在程序中用一个符号来表示一个常量这个符号就被称为符号常量例如:圆周率的值(3.14)C语言中使用预编译处理命令#define来定义符号常量#define PI 3.14 /注意:#define语句不以分号结尾则可以这样计算圆的面积:area=PI*r*r常量不能修改,程序中写 PI=3.1415 这样会引发错误

6、 11变量介绍变量的概念程序运行中,其值可以被改变的量是变量变量是计算机内存中一个被命名的数据存储位置使用变量名时实际上用的是存储在这里的数据的值12变量介绍变量的类型与数据类型是对应的不同数值需要内存空间不同,需要不同变量类型例如:小型整数(如6、250和-18)需要的内存较少计算机整数运算速度非常快大型整数和浮点数(如5000000000、或0.000000871256)需要较多存储空间,执行数学运算所需时间更长使用合适的变量类型,可确保程序运行效率提高13变量示例#include void main()int a,b,c,sum;/声明四个整型变量,分别存放三个数及它们的和printf(

7、Enter three numbersn);/提示用户的信息scanf(%d%d%d,&a,&b,&c);/分别读取三个整型数,每一个都要用一个%dsum=a+b+c;/=做赋值,求和printf(n sum=%dn,sum);/打印输出结果 14变量的定义及初始化变量定义任何变量都必须遵守先定义后使用的原则变量定义的一般形式存储类别 数据类型 变量名1,变量名2;存储类别不是必须要求声明的部分,后面章节中将讲到这个概念 int num1,num2;/定义num1,num2为整型变量float avg;/定义avg为实型变量char ch1,ch2;/定义ch1,ch2为字符型变量15变量的定

8、义及初始化变量定义的位置定义在哪里是至关重要的在哪里定义决定着这个变量在哪些范围内有效现学习阶段,可将所有变量声明放在一起,并放置于main()函数的主体语句中的前面16变量的定义及初始化变量的初始化定义变量时指示计算机为变量留出存储空间变量值并没有指定,可能为随机值使用变量前,一定要将其初始化为一个确定的值17变量的定义及初始化变量初始化方法定义变量的同时进行赋初值的操作定义变量后,使用赋值语句来初始化变量int num1=34,num2;num2=67;定义了num1和num2两个整型变量定义的同时初始化num1为34使用了等号“=”赋值运算符将67赋给变量num218变量的定义及初始化初

9、始化注意事项不要将变量初始化为该变量数据类型所表达的值域允许范围之外的值short int weight=100000;/错误C编译器也许不会发现这种错误,因此程序将被编译和链接,但当程序运行时,结果将可能与预期的不同19变量的定义及初始化初始化原则了解不同类型变量占用的字节数,不要试图将超出变量取值范围的值赋给变量声明变量时,应尽可能对它进行初始化存储整型数据时,尽量不要使用float或double变量,会降低效率不要将负值赋给unsigned变量20变量的定义及初始化特殊的char数据类型C语言使用char数据类型来存储字符。例如5,*,#,都是字符计算机内存中,所有数据都以数值方式存储人

10、们为每个字符进行了相对应的数值编码称为ASCII字符集(ASCII表示美国信息交换标准码)例如:字母a的ASCII码为97。那么,当在char变量中存储字符a时,实际存储的是9721变量的定义及初始化char变量处理使用char变量之前必须声明;也可以在声明的同时对它进行初始化char ch,ch1,b=f;char code=3;函数printf()可用于打印字符和数字格式字符串%c指示printf()打印一个字符,而%d指示它打印一个十进制整数22变量的定义及初始化#include stdio.hvoid main()char ch1=a;char ch2=90;printf(作为一个字符

11、ch1=%c,ch1);printf(n作为一个数字ch1=%d,ch1);printf(n作为一个字符ch2=%c,ch2);printf(n作为一个数字ch2=%dn,ch2);23问题上半讲结束,提出问题:如何编写程序定义并输出我们的班号与拼音姓名?24运算符与表达式什么是运算符?运算符是一个命令编译器对一个或多个操作数执行某种运算的符号类似于“+”、“-”等操作数是运算符对其执行操作的东西类似于“1”、“a”等例如:a+1中,“+”为运算符,“a”、“1”为操作数25运算符与表达式什么是表达式?表达式可以是任何计算结果为数值的东西有各种复杂程度不同的表达式最简单的表达式只包含一项:一个

12、简单变量、字面常量或符号常量例如:PI:程序中定义的符号常量复杂表达式由多个简单的表达式组成表达式之间用运算符连接例如:3*9、a=4+9等赋值语句26运算符与表达式赋值运算符赋值运算符是一个等号()编程中的用途与数学中的“相等”是不同的例如下面的语句:int a=3,b;b=a;指的是将a的值“3”赋给b,而不是说a等于b27运算符与表达式赋值运算符的格式变量=表达式赋值语句的右边可以是任何表达式(expression)但左边必须是一个变量名例如:int a=2,b=3,c;c=a*2+b;该句被执行时,将计算表达式a*2+b的值,并将结果7赋给变量c28运算符与表达式算术运算符算术运算符是

13、执行诸如加、减等数学运算的2种单目算术运算符5种双目算术运算符注:“目”就是代表参与运算的操作成员数量29运算符与表达式单目算术运算符单目数学运算符是指完成此类运算只需要一个操作数运算符运算符符号符号操作操作范例范例递增递增+将操作数加将操作数加1 1+x+x、x+x+递减递减-将操作数减将操作数减1 1-x-x、x-x-30运算符与表达式递增与递减运算符只能用于变量,而不能用于常量分别将操作数加1和减1+a;等价于 a=a+1;-b;等价于 b=b-1;这两个运算符放在操作数的前面(前缀模式),和放在操作数的后面(后缀模式)时,效果却不等价采用前缀模式时,先执行递增或递减运算,再计算表达式的

14、值采用后缀模式时,先计算表达式的值,然后再执行递增或递减操作31运算符与表达式#include stdio.hvoid main()int a=8,b;b=a+;/先取a的值做赋值给b,再执行a=a+1printf(a=%d,b=%dn,a,b);32运算符与表达式#include stdio.hvoid main()int a=8,b;b=+a;/先执行a=a+1,再取a的值做赋值给bprintf(a=%d,b=%dn,a,b);33运算符与表达式双目算术运算符双目运算符需要两个操作数运算符运算符符号符号操作操作范例范例加法加法+将两个数相加将两个数相加a+ba+b减法减法-将第将第1 1个

15、操作数减去第个操作数减去第2 2个操作数个操作数a-ba-b乘法乘法*将两个操作数相乘将两个操作数相乘a*ba*b除法除法/将第将第1 1个操作数除以第个操作数除以第2 2个操作数个操作数a/ba/b求模求模%第第1 1个操作数除以第个操作数除以第2 2个操作数得到的余数个操作数得到的余数a%ba%b34运算符与表达式“+”、“-”、“*”、“/”大家都很熟悉求模(取余)运算返回第一个操作数除以第二个操作数后得到的余数该运算符要求两边的操作数都是整型例如:10%3=1 (商为3,余数为1)25%5=0 (商为5,余数为0)2%7=2 (商为0,余数为2)35运算符与表达式求模运算符应用广泛要求

16、用户输入一个三位数的整数,倒序输出,478变874#include stdio.hvoid main()int 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%

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

18、1(3*4=12,15/12=1,1%3=1)使用圆括号可以改变计算顺序在表达式中,可以使用多个圆括号,并且可以嵌套当圆括号被嵌套时,从内向外计算表达式39运算符与表达式表达式: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*44.最后结果为num=40。通常会在书写表达式时,为清晰思路,即使不改变运算符优先级,也会使用圆括号注意:圆括号必须成对出现,否则编译器将产生错误消

19、息40运算符与表达式关系运算符关系运算符用于比较表达式例如比较两个数字大小时等问题关系运算符所组成的表达式的结果为真true(1)或假false(0)41运算符与表达式关系运算符项目表运算符运算符符号符号提出的问题提出的问题范例范例等于等于=第一个操作数是否等于第二个操作数?第一个操作数是否等于第二个操作数?a=b大于大于第一个操作数是否大于第二个操作数?第一个操作数是否大于第二个操作数?ab小于小于第一个操作数是否小于第二个操作数?第一个操作数是否小于第二个操作数?a=第一个操作数是否大于或等于第二个操作数?第一个操作数是否大于或等于第二个操作数?a=b小于等于小于等于=第一个操作数是否小于

20、或等于第二个操作数?第一个操作数是否小于或等于第二个操作数?ab);printf(%dn,a=b);printf(%dn,ab);printf(%dn,a=b);43运算符与表达式关系运算符注意事项:C语言将真(true)解释为1,假(false)解释为0。不要将描述相等关系的关系运算符“=”和赋值运算符“=”混淆用户输入的数据被用于表达式或结果为逻辑值的语句中时,数据将被解释为true或false,解释的规则如下:0表示false,所有的非0值表示true关系运算符的正确理解对于我们后面学习条件语句的使用非常重要44运算符与表达式关系运算符的优先级使用关系运算符的表达式中,也可用圆括号来改变

21、优先级运算符运算符相相对优先先级、=、=1 1!=!=、=2 245运算符与表达式关系运算符的优先级低于算术运算符例子:int a=3,b=4,c=4,d=2;num=a+bc*d将先计算c*d=8再计算a+b=7然后比较两个值的大小78?结果为0赋给num46运算符与表达式逻辑运算符现实中,评价一个问题时通常要多方参考例如:评选优秀学员的条件出勤率达到95%以上各门课程的平均分在90分以上要用到逻辑运算符把两个条件表达式进行组合47运算符与表达式三种逻辑运算符运算符运算符符号符号范例范例与(与(ANDAND)&exp1&exp2exp1&exp2或(或(OROR)|exp1|exp2exp1

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

23、(%f,&a);printf(请输入该学生的c成绩);scanf(%f,&c);printf(请输入该学生的java成绩);scanf(%f,&ja);s=(c+ja)/2;/计算学生的平均分数,存放于变量s中 if(a0.95&s90)/如果出勤率大于95%,并且平均分大于90 printf(有资格参加评选n);else /如果不满足以上条件,则执行else里的部分 printf(请继续努力n);/两个条件有任何一个不满足时,将执行该语句 50运算符与表达式逻辑运算符的优先级“!”是单目运算符优先级高于“&”和“|”和所有的关系运算符及所有的双目数学运算符运算符“&”的优先级高于“|”它们的

24、优先级低于所有的数学运算符和关系运算符同样也可以使用圆括号来改变计算顺序51其他运算符复合赋值运算符复合赋值运算符是指将双目算术运算符和赋值运算符组合在一起,提供了一种简单的方式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;52其他运算符条件运算符C语言中唯一一个三目运算符(即需要三个操作数)语法如下:a=exp1?exp2:exp3;如果exp1的结果为真(即非0),则a=exp2的值;否则a=exp3的值例如,我们比较变量a,b的大小,并将较大值存放于变量big中:big=(a=b)?a:b;/a

25、=b为真,则big=a,否则big=b53其他运算符逗号运算符“,”在C语言中经常被用作一个简单的分隔符号在一些情况下逗号是运算符,而不是分隔符例如:int a=10,b=20 x=(a+,b+);/谁能告诉我x是多少?由于使用+运算符时,采用的是后缀模式,因此先将b的值赋给x,然后将a和b的值分别加1,x=20其中的圆括号是必不可少的,因为逗号运算符的优先级低于赋值运算符逗号运算符最常用于for语句中54表达式中的类型转换当表达式中有多种类型的数据参加运算时,这时涉及到表达式中的类型转换如下程序:#include stdio.hvoid main()char ch=A;/大写字母A的ASCI

26、I值为65 int a=1;float b=2.1;double c=10.004;printf(整体求和后结果为:%lfn,ch+a+b+c);/%lf为double的输出格式控制符55表达式中的类型转换double floatlongunsignedint char,short说明:横向向左箭头表示必定的转换,如字符数据必定先转换为整数,short型转为int型,float型数据在运算时一律转换成双精度型,以提高运算精度。纵向箭头表示当运算对象为不同类型时转换的方向。例如int型与doub1e型数据进行运算,先将int型的数据转换成图double型,然后在两个同类型(double型)数据进行运算,结果为double型。箭头方向只表示数据类型级别的高低,由低向高转换。类型转换是由系统自动进行的56课堂总结C语言有哪些数据类型?如何使用常量与变量?什么是表达式的值?C语言中有哪些运算符?如何在计算数据时进行自动转换?57提问时间58

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁