6.8.5 迭代语句

语法

1、iteration-statement:

while    (    expression    )    statement

do    statement    while    (    expression    )    ;

for    (    expressionopt    ;    expressionopt     ;    expressionopt   )    statement

for    (    declaration    ;    expressionopt    ;    expressionopt    )    statement

约束

2、一个迭代语句的控制表达式应该具有标量类型。

3、一条for语句的声明部分应该仅为具有autoregister存储类的对象声明标识符。

语义

4、一条迭代语句引发一条被称为循环体的语句重复执行,直到控制表达式比较结果等于0。无论循环体是否从迭代语句还是通过一条跳转语句进入,重复都会发生。[注:被跳过的代码不被执行。特别地,一条forwhile语句的控制表达式在进入循环体之前不被计算,也不是一条for语句的clause-1。]

5、一条迭代语句是一个语句块,其作用域是其封闭语句块作用域的严格子集。循环体也是一个语句块,其作用域是迭代语句迭代语句作用域的一个严格子集。

6、对于其控制表达式不是一个常量表达式的一条迭代语句[注:一个省略的控制表达式用一个非零常量代替,它是一个常量表达式。],如果它不执行输入/输出操作,在其循环体内不访问volatile对象,并且不执行同步或原子操作,控制表达式,或(在for语句的情况下)其expression-3,可以通过对终结符的实现来占位。[注:此目的在于允许编译器翻译诸如对空循环的移除,甚至当终止不能被证明时。]

6.8.5.1 while语句

1、控制表达式的计算在循环体的每次执行之前发生。

6.8.5.2 do语句

1、控制表达式的计算在循环体的每次执行之后发生。

6.8.5.3 for语句

1、语句    for  (  clause-1  ;  expression-2  ;  expression-3  )  statement

行为如下:表达式expression-2是控制表达式,它在循环体的每次执行之前被计算。表达式expression-3作为一个void表达式,在循环体的每次执行之后被计算。如果clause-1是一个声明,那么它所声明的任一标识符的作用域是该声明的剩余部分以及整个循环体,包括其它两个表达式;在控制表达式的第一个计算之前,它以执行次序到达。如果clause-1是一个表达式,那么它在控制表达式的第一次计算之前,作为一个void表达式被计算。

2、clause-1expression-3都可以被省略。如果省略expression-2,那么它用一个非零常量来代替。[译者注:即控制表达式的条件永远是真。]

ISO/IEC 9899:2011 条款6.8.5——迭代语句的更多相关文章

  1. ISO/IEC 9899:2011 条款6.8.4——选择语句

    6.8.4 选择语句 语法 1.selection-statement: if    (    expression    )    statement if    (    expression   ...

  2. ISO/IEC 9899:2011 条款6.8.2——标签语句

    6.8.2 复合语句 语法 1.compound-statement: {    block-item-listopt    } block-item-list: block-item block-i ...

  3. ISO/IEC 9899:2011 条款6.8.1——标签语句

    6.8.1 标签语句 语法 1.labeled-statement: identifier    :    statement default    :    statement case    co ...

  4. ISO/IEC 9899:2011 条款3——术语、定义与符号

    3. 术语.定义与符号 1.对于此国际标准的意图,应用了以下定义.其它术语是在用斜体类型或一个语法规则左侧出现的地方定义.在本国际标准中所显式定义的术语不被假定为对其它地方所定义的类似术语的隐式引用. ...

  5. ISO/IEC 9899:2011 条款5——5.2.1 字符集

    5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出 ...

  6. ISO/IEC 9899:2011 条款6.4.2——标识符

    6.4.2 标识符 6.4.2.1 通用 语法 1.identifier: identifier-nodigit identifier    identifier-nondigit identifie ...

  7. ISO/IEC 9899:2011 条款6.4.3——通用字符名

    6.4.3 通用字符名 语法 1.通用字符名: universal_character-name: \u hex-quad(四位十六进制数) \U hex-quad hex-quad hex-quad ...

  8. ISO/IEC 9899:2011 条款6.8.6——跳转语句

    6.8.6 跳转语句 语法 1.jump-statement: goto    identifier    ; continue    ; break    ; return    expressio ...

  9. ISO/IEC 9899:2011 条款5——5.1.2 执行环境

    5.1.2 执行环境 1.定义了两个执行环境:独立式(freestanding)以及宿主的(hosted).在这两种情况下,当一个派定的C函数被执行环境调用时,程序就启动.所有具有静态存储周期的对象应 ...

随机推荐

  1. 一种使用gitlab的CI/CD功能实现Nginx配置更新的方法

    至于nginx的docker制作,前面已介绍过. 现在使用gitlab在线编辑的方式,可实现Nginx的自定义配置并更新. .gitlab-ci.yml内容如下: variables: project ...

  2. keras模块学习之-目标函数(objectives)笔记

    本笔记由博客园-圆柱模板 博主整理笔记发布,转载需注明,谢谢合作! 目标函数又称损失函数(loss),目的是计算神经网络的输出与样本标记的差的一种方法,如: model = Sequential() ...

  3. 评估预测函数(1)---算法不能达到我们的目的时,Deciding what to try next

    在设计机器学习系统时,一些建议与指导,让我们能明白怎么选择一条最合适,最正确的道路. 当我们要开发或者要改进一个机器学习系统时,我们应该接下来做些什么? try smaller sets of fea ...

  4. java设计模式解析(11) Chain责任链模式

    设计模式系列文章 java设计模式解析(1) Observer观察者模式 java设计模式解析(2) Proxy代理模式 java设计模式解析(3) Factory工厂模式 java设计模式解析(4) ...

  5. spring源码分析系列 (15) 设计模式解析

    spring是目前使用最为广泛的Java框架之一.虽然spring最为核心是IOC和AOP,其中代码实现中很多设计模式得以应用,代码看起来简洁流畅,在日常的软件设计中很值得借鉴.以下是对一些设计模式的 ...

  6. python读取excel的内容

    import csvimport xlrdimport xlwt def handler_excel(filename=r'd:\\wu.xlsx'): # 打开文件 workbook = xlrd. ...

  7. GITHUB添加SSH内容

    首先,你需要注册一个 github账号,最好取一个有意义的名字,比如姓名全拼,昵称全拼,如果被占用,可以加上有意义的数字. 本文中假设用户名为 chuaaqiCSDN(我的博客名的全拼) 一.gihu ...

  8. Idea和eclipse安装activiti插件

    eclipse安装:help>install new software>add             有外网状态下 输入  :http://www.activiti.org/design ...

  9. C++面向对象程序设计第三章习题答案解析

    整理一下自己写的作业,供考试前复习用,哈哈 进入正题!!! 题目: 2.分析下面的程序,写出其运行时的输出结果 这里就不展示课本源代码,直接给出修改后的代码,错误部分代码已给出具体的注释 #inclu ...

  10. OAuth 2.0攻击

    参考文章:https://www.yuque.com/pmiaowu/web_security_1/oauth 作者:PHPoop 关于OAuth2.0协议的授权流程可以参考下面的流程图: 1.Cli ...