ISO/IEC 9899:2011 条款6.8.5——迭代语句
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语句的声明部分应该仅为具有auto和register存储类的对象声明标识符。
语义
4、一条迭代语句引发一条被称为循环体的语句重复执行,直到控制表达式比较结果等于0。无论循环体是否从迭代语句还是通过一条跳转语句进入,重复都会发生。[注:被跳过的代码不被执行。特别地,一条for或while语句的控制表达式在进入循环体之前不被计算,也不是一条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-1与expression-3都可以被省略。如果省略expression-2,那么它用一个非零常量来代替。[译者注:即控制表达式的条件永远是真。]
ISO/IEC 9899:2011 条款6.8.5——迭代语句的更多相关文章
- ISO/IEC 9899:2011 条款6.8.4——选择语句
6.8.4 选择语句 语法 1.selection-statement: if ( expression ) statement if ( expression ...
- ISO/IEC 9899:2011 条款6.8.2——标签语句
6.8.2 复合语句 语法 1.compound-statement: { block-item-listopt } block-item-list: block-item block-i ...
- ISO/IEC 9899:2011 条款6.8.1——标签语句
6.8.1 标签语句 语法 1.labeled-statement: identifier : statement default : statement case co ...
- ISO/IEC 9899:2011 条款3——术语、定义与符号
3. 术语.定义与符号 1.对于此国际标准的意图,应用了以下定义.其它术语是在用斜体类型或一个语法规则左侧出现的地方定义.在本国际标准中所显式定义的术语不被假定为对其它地方所定义的类似术语的隐式引用. ...
- ISO/IEC 9899:2011 条款5——5.2.1 字符集
5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出 ...
- ISO/IEC 9899:2011 条款6.4.2——标识符
6.4.2 标识符 6.4.2.1 通用 语法 1.identifier: identifier-nodigit identifier identifier-nondigit identifie ...
- ISO/IEC 9899:2011 条款6.4.3——通用字符名
6.4.3 通用字符名 语法 1.通用字符名: universal_character-name: \u hex-quad(四位十六进制数) \U hex-quad hex-quad hex-quad ...
- ISO/IEC 9899:2011 条款6.8.6——跳转语句
6.8.6 跳转语句 语法 1.jump-statement: goto identifier ; continue ; break ; return expressio ...
- ISO/IEC 9899:2011 条款5——5.1.2 执行环境
5.1.2 执行环境 1.定义了两个执行环境:独立式(freestanding)以及宿主的(hosted).在这两种情况下,当一个派定的C函数被执行环境调用时,程序就启动.所有具有静态存储周期的对象应 ...
随机推荐
- 洛谷 P1280 尼克的任务题解
题目链接:https://www.luogu.org/problem/P1280 题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每 ...
- P3119 [USACO15JAN]草鉴定[SCC缩点+SPFA]
题目描述 约翰有n块草场,编号1到n,这些草场由若干条单行道相连.奶牛贝西是美味牧草的鉴赏家,她想到达尽可能多的草场去品尝牧草. 贝西总是从1号草场出发,最后回到1号草场.她想经过尽可能多的草场,贝西 ...
- 创建型模式(二) 工厂方法模式(Factory Method)
一.动机(Motivation) 在软件系统创建过程中,经常面临着"某个对象"的创建工作:由于需求的变化,这个对象(的具体实现)经常面临着剧烈的变化,但是它却拥有比较稳定的接口.如 ...
- c++中形参为引用和非引用时调用构造函数
#include<iostream> using namespace std; class numbered { private:static int seq; public: numbe ...
- 【CSP-S 2019】【洛谷P5665】划分【单调队列dp】
前言 \(csp\)时发现自己做过类似这道题的题目 : P4954 [USACO09Open] Tower of Hay 干草塔 然后回忆了差不多\(15min\)才想出来... 然后就敲了\(88p ...
- Vue基础入门笔记
不是面向DOM进行编程,而是面向数据去编程.当数据发生改变,页面就会随着改变. 属性绑定(v-bind)和双向数据绑定(v-model) 模板指令(v-bind:)后面跟的内容不再是字符串而是: js ...
- linux虚拟机互访
我们是按照一个小组有6个人在linux虚拟机中一个网卡配置三个ip:172.16.31.xxx; 192.168.180.xxx; 192.168.180.50+xxx;并且6台虚拟机还能够进行 ...
- 洛谷 P2827 蚯蚓 题解
每日一题 day32 打卡 Analysis 我们可以想一下,对于每一秒除了被切的哪一个所有的蚯蚓都增长Q米,我们来维护3个队列,队列1表示最开始的蚯蚓,队列2表示每一次被切的蚯蚓被分开的较长的那一部 ...
- C# 异步编程(async&await)
同步:同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去 异步:异步是指进程不需要一直等下去,而是继续执行下面的操作 ...
- 在Ubuntu 或 Debian 系统环境安装MYSQL数据库
一.第一步下载myslq安装程序 sudo apt-get install mysql-server mysql-client apt-get程序会自动下载安装最新的mysql版本.在安装的最后,它会 ...