




免费预览已结束,剩余61页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章简单程序,常量变量表达式语句组成表达式语句赋值类型转换输入/输出,常量(constant),在程序执行期间不变的数据称为常量如圆周率的近似值3.14165926自然对数底的近似值2.7183等可以直接书写在程序中的常量,称为字面常量。#includevoidmain()printf(“%fn”,2.7183);打印出2.7183,常量标识符为什么一个常量多次用到方便修改常量如何声明枚举常量表中的标识符就是常量标识符#define标识符常量如何使用#defineSPEED55,#definepai3.14#defineR10voidmain()floatx,y;x=2*pai*R;y=pai*R*R,#definepai3.14#defineR10voidmain()floatx,y;x=2*3.14*10;y=3.14*10*10,#definepai3.14;#defineR10;voidmain()floatx,y;x=2*pai*R;y=pai*R*R,#definepai3.14;#defineR10;voidmain()floatx,y;x=2*3.14;*10;y=3.14;*10;*10;,变量(variable),相对于常量,变量是程序执行期间值可变的数据对象两个方面变量值:程序运行某一时刻,变量所具有的值变量属性:名字数据类型作用域存储空间存储地址等,编译程序在把高级语言程序翻译成机器语言时给每个变量都分配一块适当的存储空间,以便随时保存变量的值。这块存储区就是变量的存储区变量的地址就是这块存储区的首地址变量的值就是这块存储区中现行保存的数据。变量v被分配在内存地址为0F000开始的存储区域,当前值为5。,变量地址,变量名,变量值,变量的存储区,变量声明,声明变量的意义:引进新变量规定所引变量的属性语法变量声明类型变量项表;变量项表变量项变量项,变量项表变量项标识符标识符=初值,不考虑初值的一般形式Tid,id,.,id;变量类型变量名字变量的作用域例子inti,j,k;charc;intt;floatamount,total;boolflag;enumred,blue,greencolor;,voidmain()intx,y;z=x*2;charz;x=x+y;z=x+y;w=z+x;,变量出现形态,声明出现赋值出现引用出现intn,x;n=1;n=3;n=n*5+7x=n;,n:,编译程序会给该变量分配一块存储空间。但是从程序开始执行的时刻一直到给该变量赋值之前该变量是没有值的,这时称该变量为“值无定义的”,为变量赋以一个它值域之内的(即所属类型的)一个数据。一旦为变量赋值,该变量就变成了“值有定义的”,引用性出现分成引用变量当前值一般在表达式中变量必须是“值有定义的”不会改变变量的值引用变量本身多出现在参数结合中可是“值无定义的”可能会改变变量的值,1,3,22,x:,22,变量地址,变量地址变量在内存中的所在位置,即内存地址。求地址将单目运算符“charc=A;enumred,blue,greencolor=red;变量在声明时被赋以初值,则在程序开始运行时,它便取得了相应值,它是值有定义的。,enumseta,b,c,dvar_set;enumseta,b,c,dvar_set=d;enumseta,b,c,d;enumsetvar_set=d;enuma,b,c,dvar_set=d;,变量使用注意事项,程序中使用的一切变量都必须声明。在同一作用域内,任何两个变量不许重名,也不许与其它类标识符重名。从程序的静态行文顺序看,变量的声明必须出现在所有使用之前。从程序的静态行文顺序看,在变量声明中给变量赋初值处,相应表达式必须是可计算的。从程序的动态执行顺序看,为变量赋值的出现必须在所有使用值之前。,表达式,表达式(expression)是C程序完成各类运算的主要部分,由运算符和运算分量组成。语法表达式基本表达式后缀表达式一元表达式二元表达式条件表达式逻辑表达式赋值表达式顺序表达式基本表达式标识符字面常量(表达式),基本表达式是C表达式的最底层,包括:标识符字面常量括号表达式标识符包括变量标识符和常量标识符,它们的类型由相应声明给出,当表达式计算时,变量应该是值有定义的。字面常量括号括表达式,3*6u0r=(x+y)*5=(r-s)/83、6、u、r、x、y、5、s、8都是基本表达式经与运算符组合后的x+y、r-s是表达式;用括号括上的表达式(x+y)、(r-s)又变成基本表达式最终若干基本表达式与运算符组合得到的r=(x+y)*5=(r-s)/8仍是表达式。,运算符优先级,C表达式与通常数学表达式的书写区别:所有字符必须写在一条水平线上。不允许出现上、下角标、分数线等。sqrt(x*y)x*x*x*x*x(x+y)/5fabs(x*y),a乘babababa*b除了下标使用方括号以外,所有括号必须用圆括号。a*b+c*(a+b)(a*(b+c*(a+b),数学中连续的关系运算,a=y|y=2r=(x+y)*5v|xxfalse|truexxtruev是一个左值(现在看就是一个变量),作为赋值运算符左端的运算分量。=是赋值运算符,由一个赋值号组成。e是一个表达式,作为赋值运算符右端的运算分量,e能计算出一个值。,days=2+5;执行结果是将值7赋给变量days。若days原来是值无定义的现在它变成值有定义的,并取值7;若days原来是值有定义的,则不论days原来值是什么,都将被7所取代days仍是值有定义的,值是7。最后整个表达式值也为7。,在赋值表达式中,赋值运算符“=”右端是计算值的表达式,左端回答“该值交给什么对象”因此下述语句都是正确的。firstnumber=1;circumference=2*pi*radius甚至数学上显然不成立的,也是正确的。nextnumber=nextnumber+1其执行结果是将变量nextnumber的值加1,得到一个新值,再送入变量nextnumber中去。,下述形式是错误的,因为左端不是变量(左值)1=firstnumberlength*width=area,例3-1设v1,v2,v是同一类型的三个变量,且v1,v2都是值有定义的,则下述语句列将使v1与v2的值互相交换v=v1;v1=v2;v2=v;,v1:,v2:,v:,例3-2做一个长50cm,宽30cm,面积500cm2的各边等宽矩形的木框,计算该木框多宽。,area=2(length*x+(width-2x)*x)即:4x*x-2(length+width)x+area=04x*x-2(length+width)x+500=0,#includestdio.h#includemath.h#definelength50.0#definewidth30.0#definearea500.0voidmain()floatx1,x2,b,d;b=-2.0*(length+width);d=sqrt(b*b-4.0*4.0*area);x1=(-b+d)/(2*4);x2=(-b-d)/(2*4);printf(x1=%.2fx2=%.2fn,x1,x2);,该程序运行后将输出:X1=36.58X2=3.42,左值实质是内存某个存储区的地址通俗的讲,左值是允许在赋值运算符左端出现的表达式。最基本的左值,+和-,Eg:(1)intp=1,q;(2)intp=1,q;q=p+;q=+p;q=1;p=2q=2;p=2,类型转换,为什么要进行类型转换对C而言,各种不同类型及其数据是有区别的C对参与运算的运算分量类型在参数结合时对参数的类型都有一定的限制或进行一些必要的转换voidmain()boolx=true,y=true,z=true;intw=x+y+z;boolu=x+y+z;,隐式类型转换,对象各种浮点类型各种整数类型转换的原因每一类型数据存储长度,表示形式不同,隐式转换规则,单目运算(一元运算、后缀运算)转换规则所有浮点类型不转换长度大于int类型的整数类型不转换长度小于int类型的带符号整数类型转换成int类型长度小于int类型的无符号整数类型值可以用int类型表示,转换成int类型值不能用int类型表示,转换成unsignedint类型,双目运算和三目运算向类型高的运算分量转换把短类型转换成长类型把整数类型转换成浮点类型把有符号类型转换成无符号类型,longdoubledoublefloatunsignedlonglonglonglongunsignedlonglongunsignedintunsignedchar、unsignedshortintchar、short,把短类型转换成长类型把整数类型转换成浮点类型把有符号类型转换成无符号类型,各占用多少字节?,强制类型转换,形式(类型名)例子(char)(A+0)结果为char类型小写的q(int)5.2/2结果为int类型的2(float)5/25/(float)2结果为float类型的2.5注意类型名必须用括号括上,该运算符就是这种形式;用括号把它的运算分量括上是一种好的习惯(char)(A+0)结果为char类型小写的q(char)A+0结果为int类型的113。,赋值运算过程,计算赋值运算符右端表达式e的值若e与v赋值兼容,把e的值按赋值转换规则转换成赋值运算符左端v的类型把转换后的值送入v中例子floatv;floatv=3.0;inti=3;inti;v=i+3;i=v+3;,赋值兼容,v=e中要求e的类型与v的类型兼容,算术赋值转换规则,输入/输出(I/O),输入把数据从外部设备(磁盘、键盘、磁带、传感器、)上读入计算机内。输出指把计算机内部的数据送到外部设备(磁盘、显示器、打印机、).C语言中的处理方式一切外部设备全部定义为文件C的I/O全部是针对文件的通过标准函数库中若干标准函数实现I/O。,程序文件分类头文件(.h)代码文件(.cpp或.c)标准库函数#include命令意义将源文件包含到当前源程序文件中形式#include#include“文件名”标准I/O函数头文件stdio.h,任何C程序使用I/O函数,必须引用该标准头文件:#include,单个字符输入,输入函数getchar()从标准输入设备(键盘)上读入一个字符,作为函数值使用charch;ch=getchar();,读入一个字符送入变量ch中,单个字符输出,输出函数putchar(int型表达式)int型表达式计算出的值转换成字符类型值输出到标准输出设备(显示器)上。函数值如果正确,输出的int型整数作为函数值如果错误,则EOF(-1)作为函数值使用charch=c;putchar(ch+3);,格式输入函数,形式scanf(,)意义其操作是从标准输入设备上读入一系列数据,按格式控制的要求进行转换并送入输入列表所列的诸变量中函数值输入的数据个数如果输入操作正确EOF否则,输入列表,num1=,25,flag=,A,area=,61.500,num2=,987,例3-3修改例3-2使之适用于任意长、宽、面积;并产生一个较好的输出格式。#includestdio.h#includemath.hvoidmain()floatx1,x2,b,d;floatlength,width,area;printf(pleaseinp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年护士执业水平考核国家统一考试试卷及答案解析
- 2025年国际贸易经纪人职业资格水平考核试题及答案解析
- 2025年广告文案创意专业考试试题及答案解析
- 课件不允许快进的原因
- 2025年生产安全员工培训考试题
- 2025年山西C类安全员安全知识题库
- 2025年呼叫中心客服面试题
- 冀教英语教学课件
- 2025年网络安全工程师初级面试与笔试宝典及答案集
- 2025年放射技术士模拟试卷
- 资产回收合同协议模板
- 基层司法所规范化建设
- 城市低空安全监管平台解决方案
- 超市安全知识培训内容
- 银行招聘职业能力测验-2025中国银行春招笔试考题
- 旅游行业导游培训制度与措施
- 初二学生入学教育
- 九年级《开学第一课》课件
- 数据标注培训课件
- 《视觉表现技巧》课件
- 主动脉夹层临床医学专业教学系列课件讲解
评论
0/150
提交评论