3. 术语、定义与符号

1、对于此国际标准的意图,应用了以下定义。其它术语是在用斜体类型或一个语法规则左侧出现的地方定义。在本国际标准中所显式定义的术语不被假定为对其它地方所定义的类似术语的隐式引用。在本国际标准中没被定义的术语将根据ISO/IEC 2382-1进行解释。在本国际标准中没被定义的数学符号将根据ISO 31-11中进行解释。

3.1 访问

1、<运行时行为>读或修改一个对象的值

2、注1:这里,这两个行为中同时只有一个发生,要么“读”,要么“修改”被使用。

3、注2:“修改”包括要被存储的新的值与先前的值相同的情况。

4、注3:没被计算的表达式不访问对象。

3.2 对齐

1、要求一个特定类型的对象坐落于一个字节地址特定倍数的地址存储边界上

3.3 实参

1、实际argument

实际parameter(已作废)

在一个函数调用表达式中通过小括号包围起来的用逗号分隔的列表中的表达式,或是在一个类似函数的宏调用中用小括号包围的逗号分隔的列表中的一串预处理符记(token)

3.4 行为

1、外部表情或行动

3.4.1 实现自定义的行为

1、本国际标准未指定的行为,而是由每个具体实现来文档说明如何做出选择来处理这些行为

2、例子:一个实现自定义的行为的一个例子是,当一个带符号整数做右移操作时,最高位比特的移位扩展[译者注:即,是作为算术右移还是逻辑右移]。

3.4.2 地区特定行为

1、每个实现所文档说明的依赖于国家当地习俗、文化以及语言的行为

2、例子:一个地区特定行为的例子是,islower函数对于26个小写拉丁字母之外的字符是否返回真。

3.4.3 未定义行为

1、使用了本国际标准并未强加要求的一个不可移植的或有错误的程序构造,或不正确的数据后的行为

2、注:可能的未定义的行为范围从完全忽略不可预测结果的场景,到在翻译或程序执行期间,在该环境中的一个文档化的方式特征下的行为(带有或没有诊断消息发布),到结束一个翻译或执行(带有一个诊断信息发布)。

3、例子:未定义行为的一个例子是整数溢出的行为。

3.4.4 未指定行为

1、使用一个未指定的值,或本国际标准提供两个或更多可能性,以及没有对在任一对象中选择哪个而强加进一步的要求的其它行为

2、例子:一个未指定行为的例子是对一个函数的实参以哪种次序计算。

3.5 比特

1、在执行环境中足够大的数据存储单元,用来存放具有两种值的其中之一的一个对象[译者注:两种值分别为0和1]

2、注:不必要一定能表达一个对象每个单独比特的地址。[译者注:对于一般C语言实现来说,存放一个对象的最小单位尺寸是一个字节,即8个比特。因此,一个地址所能记录的对象的最小单元也就是一个字节。]

3.6 字节

1、足够大的可寻址的数据存储单元以存放执行环境中基本字符集的任一成员

2、注1:唯一地表达一个对象的每个单独字节的地址是有可能的。

3、注2:一个字节是由一个连续的比特串组成,所构成字节的比特位的个数多少是由实现定义的。最低有效位被称为低序比特;最高有效位被称为高序比特

3.7 字符

1、用于组织、控制或表示数据的一组元素的<抽象>成员

3.7.1 字符

1、字符

单字节字符

适应在一个字节中的<C>个比特的表示

3.7.2 多字节字符

1、用一个或多个字节序列所表示的源或执行环境的扩展字符集的一个成员

2、注:扩展字符集是基本字符集的超集。

3.7.3 宽字符

1、用类型wchar_t的对象所表示的值,能够表示当前地域中的任一字符

3.8 强制规定

1、用于解释阐述语言元素在语法上或是在语义上的约束

3.9 正确取整的结果

1、顺从当前取整模式,对所给结果无限范围与精度中的值取最近的结果格式的表示

3.10 诊断信息

1、属于实现消息输出的一个实现自定义的子集的消息

3.11 向前引用

1、引用一条本国际标准稍后介绍的子条款,而该子条款含有对当前子条款相关联的信息

3.12 实现

1、在特定选项下,运行在一个特定翻译环境中的特定软件集,用于执行程序的翻译,并支持在一个特定执行环境中对函数的执行

3.13 实现限制

1、由实现强加到程序上的限制

3.14 存储位置

1、要么是一个标量类型的对象,要么是一个最大顺序的邻近位域,所有位域具有非零宽度

2、注1:执行程序的两个线程可以更新并访问独立的存储位置,不相互干扰。

3、注2:一个位域与一个邻近非位域成员在独立的存储位置空间。这也应用于两个位域,如果其中一个在一个嵌套结构体声明内声明,而另一个不是,或者如果两个被一个零长度的位域声明所分隔,或者它们被一个非位域成员声明所分隔。在一个结构体中更新两个非原子的位域是不安全的,如果所有在它们之间声明的成员也是(非零长度)的位域,而不管那些介入的位域恰好是什么大小。

4、例子:一个结构体声明如下:

struct {
char a;
int b:, c:, :, d:;
struct { int ee:; } e;
};

包含了四个独立的存储器位置:成员a以及位域de.ee,每个都是独立的存储位置,并且可以同时被修改而不会相互干扰。位域bc拼接在一起构成了第四个存储位置。位域bc不能被同时修改不过ba却可以。

3.15 对象

1、在执行环境中的数据存储区域,里面的内容可以用来表达值

2、注:当一个对象被引用时,该对象可以被解释为具有一个特定类型;见6.3.2.1。

3.16 形参

1、正规形参

正规实参(已作废)

作为一个函数声明或定义部分被声明的对象,在函数入口处需要一个值,或由立即跟在像函数一样的宏定义后面的用圆括号包围的逗号分隔的列表中的一个标识符

3.17 推荐的实践

1、规范强烈建议保持顺从标准的意图,但对于某些实现可能是不切实际的。

3.18 运行时强制规定

1、当调用一个库函数调用时对一个程序的要求

2、注1:一个运行时强制规定与3.8所定义的强制规定不同,尽管在术语上类似,并且在翻译时不需要被诊断。

3、注2:支持附录K中扩展的实现要求校验运行时强制规定,对于一个库函数没有被程序违反;见K.3.1.4。

3.19 值

1、当解释为具有一个指定类型时的一个对象内容的精确意思

3.19.1 实现定义的值

1、没个实现文档说明该选择如何做的未指定的值

3.19.2 中间值

1、要么是一个未指定的值,要么是一个陷阱表示

3.19.3 未指定的值

1、本国际标准没有强加规定在任一实例中选择什么值的相关类型的有效值

2、注:一个未指定的值不能是一个陷阱值

3.19.4 陷阱表示

1、不需要表示对象类型的一个值的一个对象表示

3.19.5 执行一个陷阱

1、程序的中断指向,诸如不执行进一步的其它操作

2、注:在本国际标准中,当单词“陷阱”后面没有立即跟“表示”的时候,这是所预订的用法。注:比如,“陷阱或停止(如果支持)被禁止……”(F.8.2)。注意,获取一个陷阱表示可能执行一个陷阱但也不是必要的。(见6.2.6.1)。

3.20 ⎡x⎤

1、x封顶:大于等于x的最小整数

2、例子:⎡2.4⎤是3,⎡-2.4⎤是-2。

3.21 ⎣2.4⎦

1、x的封底:小于等于x的最大整数

2、例子:⎣2.4⎦是2,⎣-2.4⎦是-3。

ISO/IEC 9899:2011 条款3——术语、定义与符号的更多相关文章

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

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

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

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

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

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

  4. ISO/IEC 9899:2011 条款6.9.2——外部对象定义

    6.9.2 外部对象定义 语义 1.如果对一个对象的标识符的声明具有文件作用域以及一个初始化器,那么该声明是对该标识符的一个外部定义. 2.对于具有文件作用域且没有一个初始化器.没有一个存储类说明符, ...

  5. ISO/IEC 9899:2011 条款6.9——外部定义

    6.9 外部定义 语法 1.translation-unit: external-declaration translation-unit    external-declaration extern ...

  6. ISO/IEC 9899:2011 条款6.9.1——函数定义

    6.9.1 函数定义 语法 1.function-definition: declaration-specifiers    declarator    declaration-listopt     ...

  7. ISO/IEC 9899:2011 条款6.7.8——类型定义

    6.7.8 类型定义 语法 1.typedef-name: identifier 约束 2.一个typedef名指定了一个可变修改的类型,然后它应该具有语句块作用域. 语义 3.在一个声明中,该声明的 ...

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

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

  9. ISO/IEC 9899:2011 条款4——标准顺从

    4. 标准顺从 1.在本国际标准中,“应该”被解释为对一个实现或一个程序的要求:相反地,“不该”被解释为禁用. 2.如果违反了出现在一个强制规定或运行时强制规定之外的“应该”或“不该”要求,那么该行为 ...

随机推荐

  1. Windows安装Redis(转!)

    转自https://www.cnblogs.com/wxjnew/p/9160855.html “现在我已经走到了人生的十字路口边了,我相信,在已走过的人生道路中,我一直知道其中哪一条是正确的,是的, ...

  2. C# 模拟鼠标移动和点击

    我们需要用到的mouse_event函数,位于user32.dll这个库文件里面,所以我们要先声明引用. [System.Runtime.InteropServices.DllImport(" ...

  3. C++内存分配/分布——堆栈存储区

    FROM: C++内存分配方式详解——堆.栈.自由存储区.全局/静态存储区和常量存储区 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区.里面的变量通常是局部变量.函数参数等 ...

  4. 使用docker 实现MySQL主从同步/读写分离

    1. 利用 docker 实现 mysql 主从同步 / 读写分离 为了保证数据的完整和安全,mysql 设计了主从同步,一个挂掉还可以用另个.最近重构论坛,想来改成主从吧.担心失误,就先拿 dock ...

  5. MySQL 中间件 - DBLE 简单使用

    DBLE 是企业级开源分布式中间件,江湖人送外号 “MyCat Plus”:以其简单稳定,持续维护,良好的社区环境和广大的群众基础得到了社区的大力支持: 环境准备 DBLE项目资料   DBLE官方网 ...

  6. git version info & svn version info map(七)

    To generate the same version number as SVN, we can generate the same version number as SVN with the ...

  7. learning scala repreated parameters

  8. 集成omnibus-ctl 开发一个专业的软件包管理工具

    前边有转发过来自chef 团队的一篇omnibus-ctl 介绍文章,以下尝试进行项目试用 就是简单的集成,没有多少复杂的操作 环境准备 ruby ruby 使用2.6.3 使用 rbenv 安装,可 ...

  9. velero 备份、迁移 kubernetes 应用以及持久化数据卷

    velero 是heptio 团队开源的kubernetes 应用以及持久化数据卷备份以及迁移的解决方案,以前的名字为ark 包含以下特性: 备份集群以及恢复 copy 当前集群的资源到其他集群 复制 ...

  10. [BZOJ1191]超级英雄Hero

    Description 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的 多少获得不同数目的奖品或奖金.主持人问题准备了若干道题目,只有当选手正确 ...