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. 图表可视化highcharts和百度的echarts

    前端数据可视化插件有很多,有 Highcharts(https://www.hcharts.cn/) Echarts(http://echarts.baidu.com/) D3(https://d3j ...

  2. 火狐谷歌webdriver驱动地址

    ChormeDrive下载 打开百度搜索Chromedriver官网下载,点击进入这个页面,链接为:http://npm.taobao.org/mirrors/chromedriver/2.41/  ...

  3. 模拟赛20181031 雅礼 Wearry 养花 折射 画作

    % Day1 Solution % Wearry % Stay determined! 养花    考虑当 kkk 确定的时候如何求答案, 显然对于所有形如 [ak,(a+1)k)[ak, (a+1) ...

  4. Hbase表结构

    1.Hbase表结构:可以看成map,里面有行键,行键是按照字母顺序排序.行键下面是列族,每个列族可以有不同数量的列甚至是没有列.每个列里面包含着不同时间版本的列的值. 行键:是按照字母的顺序排序的, ...

  5. 后端程序员常用的linux命令

    1. windows   ctrl+ -  终端窗口变小      ctrl + shift + =  终端窗口变大 1. mac   command+ -  终端窗口变小      command  ...

  6. Uoj #35. 后缀排序(后缀数组)

    35. 后缀排序 统计 描述 提交 自定义测试 这是一道模板题. 读入一个长度为 nn 的由小写英文字母组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在 ...

  7. IntelliJ IDEA 2017 JDK Tomcat Maven 配置步骤详解(一)

    要求   配置 Java基础环境(实际上应该在虚拟机linux环境下 安装CentOS 7,但是我这电脑实在承受不住了) 安装 开发工具 IntelliJ IDEA 2017.1 第一部分: JDK ...

  8. MySQL5.7 基础之二

    设计范式: 第一范式:字段是原子性 第二范式:存在可用主键 第三范式:任何表都不应该有依赖于其它表非主键的字段 创建数据库.设计数据表 字段:字段名.数据类型.约束(通过键来实现,而键其实可以当做索引 ...

  9. Java与设计模式之单例模式(上)六种实现方式

           阎宏博士在<JAVA与模式>中是这样描述单例模式的:作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类.      ...

  10. 模板 - 数学 - 多项式 - 快速数论变换/NTT

    Huffman分治的NTT,常数一般.使用的时候把多项式的系数们放进vector里面,然后调用solve就可以得到它们的乘积.注意这里默认最大长度是1e6,可能需要改变. #include<bi ...