当前位置: 首页 > news >正文

淘客推广个人网站怎么做百度云服务器做网站稳定吗

淘客推广个人网站怎么做,百度云服务器做网站稳定吗,网站制作书生,网上书店网站开发5 . 1 简单语句 C语言中的大多数语句都以分号结束#xff0c;一个表达式#xff0c;比如ival 5 , 末尾加上分号就变成了表达式语句(expression statement)。表达式语句的作用是执行表达式并丢弃掉求值结果#xff1a;ival 5#xff1b; // 一条没什么实际用处的表达式语…5 . 1 简单语句 C语言中的大多数语句都以分号结束一个表达式比如ival 5 , 末尾加上分号就变成了表达式语句(expression statement)。表达式语句的作用是执行表达式并丢弃掉求值结果ival 5 // 一条没什么实际用处的表达式语句cout ival // 一条有用的表达式语句第一条语句没什么用处因为虽然执行了加法但是相加的结果没被使用。比较普遍的情况是表达式语句中的表达式在求值时附带有其他效果比如给变量赋了新值或者输出了结果。 空语句 最简单的语句是空语句(nullstatement),空语句中只含有一个单独的分号     ;   //空语句如果在程序的某个地方语法上需要一条语句但是逻辑上不需要此时应该使用空语句。一种常见的情况是当循环的全部工作在条件部分就可以完成时我们通常会用到空语句。例如我们想读取输入流的内容直到遇到一个特定的值为止除此之外什么事情也不做while循环的条件部分首先从标准输入读取一个值并且隐式地检查cin,判断读取是否成功。假定读取成功条件的后半部分检查读进来的值是否等于sought的值。如果发现了想要的值循环终止否则从cin中继续读取另一个值再一次判断循环的条件。 别漏写分号也别多写分号 因为空语句是一条语句所以可用在任何允许使用语句的地方。由于这个原因某些看起来非法的分号往往只不过是一条空语句而已从语法上说得过去。下面的片段包含两条语句表达式语句和空语句。ival vl v2;; / / 正确第二个分号表示一条多余的空语句多余的空语句一般来说是无害的但是如果在if或者while的条件后面跟了一个额外的分号就可能完全改变程序员的初衷。例如下面的代码将无休止地循环下去无终止条件 分号使条件改变失效虽然从形式上来看执行递增运算的语句前面有缩进但它并不是循环的一部分。循环条件后面跟着的分号构成了一条空语句它才是真正的循环体。 复合语句块 复合语句compoundstatement是指用花括号括起来的司能为空的语句和声明的序列复合语句也被称作块block,一个块就是一个作用域参见2.2.4节第43页在块中引入的名字只能在块内部以及嵌套在块中的子块里访问。通常名字在有限的区域内可见该区域从名字定义处开始到名字所在的最内层块的结尾为止。如果在程序的某个地方语法上需要一条语句但是逻辑上需要多条语句则应该使用复合语句。例如while或者for的循环体必须是一条语句但是我们常常需要在循环体内做很多事情此时就需要将多条语句用花括号括起来从而把语句序列转变成块。举个例子回忆1.4.1节第10页的while循环:程序从逻辑上来说要执行两条语句但是while循环只能容纳一条。此时把要执行的语句用花括号括起来就将其转换成了一条复合语句。块不可以使用分号进行结尾5.2语句作用域 可以在if、switch、while和for语句的控制结构内定义变量。定义在控制结构当中的变量只在相应语句的内部可见一旦语句结束变量也就超出其作用范围了5.3条件语句 C语言提供了两种按条件执行的语句。一种是if语句它根据条件决定控制流另外一种是switch语句它计算一个整型表达式的值然后根据这个值从几条执行路径中选择一条。 5.3.1 if语句 if语句(ifstatement)的作用是判断一个指定的条件是否为真根据判断结果决定是否执行另外一条语句。if语句包括两种形式一种含有else分支另外一种没有。简单if语句的语法形式是在这两个版本的if语句中condition都必须用圆括号包围起来。condition可以是一个表达式也可以是一个初始化了的变量声明(参见5.2节第155页)。不管是表达式还是变量其类型都必须能转换成(参见4.11节第141页)布尔类型。通常情况下,statement和statement2是块语句。如果condition为真执行statemento当statement执行完成后程序继续执行if语句后面的其他语句。如果condition为假,跳过statemento对于简单if语句来说程序继续执行if语句后面的其他语句对于ifelse语句来说执行statement2 使用 if else语句 我们举个例子来说明if语句的功能程序的目的是把数字形式表示的成绩转换成字母形式。假设数字成绩的范围是从0到100(包括100在内)其中100分对应的字母形式是A”低于60分的成绩对应的字母形式是“F”。其他成绩每10个划分成一组60到69(包括69在内)对应字母D”、70到79对应字母C”以此类推。使用vector对象存放字母成绩所有可能的取值判断grade的值是否小于60,根据结果选择执行if分支还是else分支。在else分支中由成绩计算得到一个下标具体过程是首先从grade中减去50,然后执行整数除法(参见4.2节在125页)去掉余数后所得的商就是数组scores对应的下标。 悬垂else 当一个if语句嵌套在另一个if语句内部时很可能if分支会多于else分支。事实上之前那个成绩转换的程序就有4个if分支而只有2个else分支。这时候问题出现了我们怎么知道某个给定的else是和哪个if匹配呢这个问题通常称作悬垂else(danglingelse),在那些既有if语句又有ifelse语句的编程语言中是个普遍存在的问题。不同语言解决该问题的思路也不同就C而言它规定else与离它最近的尚未匹配的if匹配从而消除了程序的二义性。当代码中if分支多于else分支时程序员有时会感觉比较麻烦。举个例子来说明对于添加加号减号的那个最内层的ifelse语句我们用另外一组条件改写它5.3.2switch语句 switch语句(switchstatement)提供了一条便利的途径使得我们能够在若干固定选项中做出选择。举个例子假如我们想统计五个元音字母在文本中出现的次数程序逻辑应该如下所示从输入的内容中读取所有字符。令每一个字符都与元音字母的集合比较。如果字符与某个元音字母匹配将该字母的数量加1。显示结果。要想实现这项功能直接使用switch语句即可switch语句首先对括号里的表达式求值该表达式紧跟在关键字switch的后面可以是一个初始化的变量声明(参见5.2节第155页)。表达式的值转换成整数类型然后与每个case标签的值比较。如果表达式和某个case标签的值匹配成功程序从该标签之后的第一条语句开始执行直到到达了switch的结尾或者是遇到一条break语句为止。我们将在5.5.1节(第170页)详细介绍break语句简言之break语句的作用是中断当前的控制流。此例中break语句将控制权转移到switch语句外面。因为switch是while循环体内唯一的语句所以从switch语句中断出来以后,程序的控制权将移到while语句的右花括号处。此时while语句内部没有其他语句要执行所以while会返回去再一次判断条件是否满足。如果switch语句的表达式和所有case都没有匹配上将直接跳转到switch结构之后的第一条语句。刚刚说过在上面的例子中退出switch后控制权回到while语句的条件部分。case关键字和它对应的值一起被称为case标签(caselabel)。case标签必须是整型常量表达式(参见2.4.4节第58页)switch内部的控制流 理解程序在case标签之间的执行流程非常重要。如果某个case标签匹配成功将从该标签开始往后顺序执行所有case分支除非程序显式地中断了这一过程否则直到switch的结尾处才会停下来。要想避免执行后续case分支的代码我们必须显式地告诉编译器终止执行过程。大多数情况下在下一个case标签之前应该有一条break语句。然而也有一些时候默认的switch行为才是程序真正需要的。每个case标签只能对应一个值但是有时候我们希望两个或更多个值共享同一组操作。此时我们就故意省略掉break语句使得程序能够连续执行若干个case标签。例如也许我们想统计的是所有元音字母出现的总次数在上面的代码中几个case标签连写在一起中间没有break语句。因此只要ch是元 音字母不管到底是五个中的哪一个都执行相同的代码。C程序的形式比较自由所以case标签之后不一定非得换行。把几个case标签写在一行里强调这些case代表的是某个范围内的值default标签 如果没有任何一个case标签能匹配上switch表达式的值程序将执行紧跟在default标签(defaultlabel)后面的语句。例如可以增加一个计数值来统计非元音字母的数量只要在default分支内不断递增名为otherCnt的变量就可以了 switch内部的变量定义 如前所述switch的执行流程有可能会跨过某些case标签。如果程序跳转到了某个特定的case,则switch结构中该case标签之前的部分会被忽略掉。这种忽略掉一部分代码的行为引出了一个有趣的问题如果被略过的代码中含有变量的定义该怎么办答案是如果在某处一个带有初值的变量位于作用域之外在另一处该变量位于作用域之内则从前一处跳转到后一处的行为是非法行为。假设上述代码合法则一旦控制流直接跳到false分支,也就同时略过了变量filename和ival的初始化过程。此时这两个变量位于作用域之内跟在false之后的代码试图在尚未初始化的情况下使用它们这显然是行不通的。因此C语言规定不允许跨过变量的初始化语句直接跳转到该变量作用域内的另一个位置。如果需要为某个case分支定义并初始化一个变量我们应该把变量定义在块内从而确保后面的所有case标签都在变量的作用域之外。5 . 4 迭代语句 迭代语句通常称为循环它重复执行操作直到满足某个条件才停下来。while和 for 语句在执行循环体之前检查条件do while语句先执行循环体然后再检查条件。定义在while条件部分或者while循环体内的变量每次迭代都经历从创建到销毁的过程。while循环结束之后 循环控制变量仍然可以使用第一个循环从标准输入中读取数据我们一开始不清楚循环要执行多少次当cin读取到无效数据、遇到其他一些输入错误或是到达文件末尾时循环条件失效。第二个循环重复执行直到遇到一个负值为止循环终止后beg或者等于v.end(),或者指向v中一个小于0的元素。可以在while循环外继续使用beg的状态以进行其他处理。传统for循环的执行流程 我们以3.2.3节 (第 85页 )的 for循环为例求值的顺序如下所示1循环开始时首先执行一次init-statement此例中定义index并初始化为0。2.接下来判断condition.如果index不等于s.size()而且在s[index]位置的字符不是空白则执行for循环体的内容。否则循环终止。如果第一次迭代时条件就为假for循环体一次也不会执行。3.如果条件为真执行循环体。此例中for循环体将s[index]位置的字符改写成大写形式。4.最后执行express。此例中将index的值加1。这4步说明了for循环第一次迭代的过程。其中第1步只在循环开始时执行一次第2、3、4步重复执行直到条件为假时终止也就是在s中遇到一个空白字符或者index大于s.size()时终止。牢记for语句头中定义的对象只在for循环体内可见。因此在上面的例子中for循环结束后index就不可用了。省略for语句头的某些部分 for语句头能省略掉init-statement condition和expression中的任何一个(或者全部)。如果无须初始化则我们可以使用一条空语句作为init-statement.例如对于在vector对象中寻找第一个负数的程序完全能用for循环改写注意分号必须保留以表明我们省略掉了init-statementc说得更准确一点分号表示的是一个空的init-statement。在这个循环中因为所有要做的工作都在for语句头的条件和表达式部分完成了所以for循环体也是空的。其中条件部分决定何时停止查找表达式部分递增迭代器。省略condition的效果等价于在条件部分写了一个true。因为条件的值永远是true,所以在循环体内必须有语句负责退出循环否则循环就会无休止地执行下去我们也能省略掉for语句头中的expresssion但是在这样的循环中就要求条件部分或者循环体必须改变迭代变量的值。举个例子之前有一个将整数读入vector的while循环我们使用for语句改写它因为条件部分能改变i 的值所以这个循环无须表达式部分。其中条件部分不断检查输入流的内容只要读取完所有的输入或者遇到一个输入错误就终止循环。因为对于do-while来说先执行语句或者块后判断条件所以不允许在条件部分定义变量5.5跳转语句 跳转语句中断当前的执行过程。C语言提供了4种跳转语句break、continue,goto和returno本章介绍前三种跳转语句return语句将在6.3节(第199页)进行介绍。标记为#1的break语句负责终止连字符case标签后面的for循环。它不但不会终止switch语句甚至连当前的case分支也终止不了。接下来程序继续执行for循环之后的第一条语句这条语句可能接着处理连字符的情况也可能是另一条用于终止当前分支的break语句。标记为#2的break语句负责终止switch语句但是不能终止while循环。执行完这个break后程序继续执行while的条件部分5.6 try语句块和异常处理 异常是指存在于运行时的反常行为这些行为超出了函数正常功能的范围。典型的异常包括失去数据库连接以及遇到意外输入等。处理反常行为可能是设计所有系统最难的一部分。当程序的某部分检测到一个它无法处理的问题时需要用到异常处理。此时检测出问题的部分应该发出某种信号以表明程序遇到了故障无法继续下去了而且信号的发出方无须知道故障将在何处得到解决。一旦发出异常信号检测出问题的部分也就完成了任务。如果程序中含有可能引发异常的代码那么通常也会有专门的代码处理问题。例如如果程序的问题是输入无效则异常处理部分可能会要求用户重新输入正确的数据如果丢失了数据库连接会发出报警信息。异常处理机制为程序中异常检测和异常处理这两部分的协作提供支持。在C语言中异常处理包括5.6.1throw表达式 程序的异常检测部分使用throw表达式引发一个异常。throw表达式包含关键字throw和紧随其后的一个表达式其中表达式的类型就是抛出的异常类型。throw表达式后面通常紧跟一个分号从而构成一条表达式语句。举个简单的例子回忆1.5.2节(第20页)把两个Sales_item对象相加的程序。这个程序检查它读入的记录是否是关于同一种书籍的如果不是输出一条信息然后退出。try语句块的一开始是关键字try,随后紧跟着一个块这个块就像大多数时候那样是花括号括起来的语句序列。跟在try块之后的是一个或多个catch子句。catch子句包括三部分关键字catch、括号内一个(可能未命名的)对象的声明(称作异常声明exceptiondeclaration)以及一个块。当选中了某个catch子句处理异常之后执行与之对应的块。catch-旦完成程序跳转到try语句块最后一个catch子句之后的那条语句继续执行。try语句块中的program-statements组成程序的正常逻辑像其他任何块一样program-statements可以有包括声明在内的任意C语句。一如往常try语句块内声明的变量在块外部无法访问特别是在catch子句内也无法访问。程序本来要执行的任务出现在try语句块中这是因为这段代码可能会抛出一个runtime_error类型的异常。try语句块对应catch子句该子句负责处理类型为runtime_error的异常。如果try语句块的代码抛出了runtime_error异常接下来执行catch块内的语句。在我们书写的catch子句中输出一段提示信息要求用户指定程序是否继续。如果用户输入n执行break语句并退出while循环否则直接执行while循环的右侧花括号意味着程序控制权跳回到while条件部分准备下一次迭代。给用户的提示信息中输出了err.what()的返回值。我们知道err的类型是runtime_error,因此能推断what是runtime_error类的一个成员函数(参见1.5.2节第20页)。每个标准库异常类都定义了名为what的成员函数这些函数没有参数返回值是C风格字符串(即const char*),其中runtime_error的what成员返回的是初始化一个具体对象时所用的string对象的副本。如果上一节编写的代码抛出异常则本节的catch子句输出throw 抛出错误信息和错误对象绑定try捕捉错误信息catch处理输出之前throw中 错误信息和错误对象绑定的结果5.6.3标准异常 C标准库定义了一组类用于报告标准库函数遇到的问题。这些异常类也可以在用户编写的程序中使用它们分别定义在4个头文件中exception头文件定义了最通用的异常类exception。它只报告异常的发生不提供任何额外信息。stdexcept头文件定义了几种常用的异常类详细信息在表5.1中列出。new头文件定义了bad_alloc异常类型这种类型将在12.1.2节第407页详细介绍。type_info头文件定义了bad_cast异常类型这种类型将在19.2节第731页详细介绍what函数返回的C风格字符串的内容与异常对象的类型有关。如果异常类型有一个字符串初始值则what返回该字符串。对于其他无初始值的异常类型来说what返回的内容由编译器决定。 小结 C语言仅提供了有限的语句类型它们中的大多数会影响程序的控制流程while、for和dowhile语句执行迭代操作。if和switch语句提供条件分支结构。continue语句终止循环的当前一次迭代。break语句退出循环或者switch语句。goto语句将控制权转移到一条带标签的语句。try和catch,将一段可能抛出异常的语句序列括在花括号里构成try语句块。catch子句负责处理代码抛出的异常。throw表达式语句存在于代码块中将控制权转移到相关的catch子句。return语句终止函数的执行。我们将在第6登介绍return语句。除此之外还有表达式语句和声明语句。表达式语句用于求解表达式关于变量的声明和定义在第2章已经介绍过了。 词汇 复合语句(compound statement)和块是同义词。异常处理代码(exception handler)程序某处引发异常后用于处理该异常的另一处代码。和 catch子句是同义词。异常安全(exception safe) 是一-个术语表示的含义是当抛出异常后程序能执行正确的行为。表达式语句(expression statement)即一条表达式后面跟上一个分号令表达式执行求值过程。控制流(flow of control) 程序的执行路径 带标签语句(labeled statement)前面带有标签的语句。所谓标签是指一个标识符以及紧跟着的一个冒号。对于同一个标识符来说用作标签的同时还能用于其他目的互不干扰。空 语 句 (null statement)只含有一个分号的语句引 发 (raise)含义类似于throw。在 C语言中既可以说抛出异常也可以说引发异常。范围 for 语 句 (range for statement)在一个序列中进行迭代的语句。terminate是一个标准库函数当异常没有 被捕捉到时调用。terminate终止当前程序的执行。
http://www.zqtcl.cn/news/755282/

相关文章:

  • 福州志愿者官方网站怎么做erp管理系统介绍
  • 高端网站建设费用情况广州开发区控股集团有限公司
  • 精湛的网站设计云南网招聘
  • 南昌网站建设公司行情Wordpress添加分页按钮
  • 论坛网站建设流程wordpress速度优化插件
  • PHP套模板做网站建设银行保定分行网站
  • 怎样免费注册网站域名wordpress网站回调域
  • 东莞个人免费建网站乐清网约车事件
  • 备案查询网站网站的登录弹窗怎么做
  • 网站开发 mvc北京建设工程主管部门网站
  • 淮安建设机械网站制作代理公司注册需要多少钱
  • 站长收录茌平建设局网站
  • 如何进行网站开发开发区人才
  • 网站制作 视频网站维护的主要内容包括
  • 快速企业建站深圳网站关键词优化推广
  • 如何开网店详细步骤东莞市网络seo推广
  • 个人可以做哪些有意思的网站网站和网站的app
  • 北京高端网站开发公司网站建设后台实训体会
  • 青岛海川建设集团有限公司网站wordpress 变私有云
  • 网站备案人可以改吗石大网页设计与网站建设客观题
  • 宁波网站优化方案免费关键词挖掘工具
  • 网站制作想法免费做效果图网站
  • 晓风彩票网站建设软件微信上发的链接网站怎么做的
  • 关键词有哪几种台州优秀关键词优化
  • 盐田区住房和建设局网站软件开发文档怎么编写
  • 网站响应式建设seo排名优化怎样
  • 山东 网站备案德清县建设局网站
  • 中英语双语网站咋做提供网站建设设计外包
  • 云网站功能江门网站seo关键词排名优化
  • 潍坊网站建设外贸制作html网站