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. MySQL-查看DB文件位置

    show global variables like "%datadir%"

  2. maven学习笔记二(了解maven的基本命令)

    maven常用的命令 mvn archetype:create 创建Maven项目 mvn compile 编译源代码 mvn deploy 发布项目 mvn test-compile 编译测试源代码 ...

  3. Netlink: 内核与用户空间传输数据的socket协议

    https://en.wikipedia.org/wiki/Netlink https://stackoverflow.com/questions/12899055/how-kernel-notify ...

  4. admin端的教师管理功能测试

    1  概述 1.1   测试范围 本次所测试的内容是admin端的教师管理功能. 1.2   测试方法 采用黑盒子方法进行集成测试. 1.3   测试环境 (1)   服务器l  操作系统:Windo ...

  5. poj3268 Silver Cow Party(最短路)

    非常感谢kuangbin专题啊,这道题一开始模拟邻接表做的,反向边不好处理,邻接矩阵的话舒服多了. 题意:给n头牛和m条有向边,每头牛1~n编号,求所有牛中到x编号去的最短路+回来的最短路的最大值. ...

  6. jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class

    java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.conte ...

  7. Docker 基本操作(附 redis、nginx部署)

    下载安装 Docker 也有一个月了.中间看过几次也没有深入的了解研究.就只是拉取了两个镜像简单的看了看. 昨天因一个项目中需要用到 Redis ,因为是 Windows 系统,看了下安装包比较老了有 ...

  8. delete properties inside object

  9. 通过vue-cli搭建vue项目

    一.搭建环境 安装node.js 从node.js官网下载并安装node,安装过程很简单,一路“下一步”就可以了.安装完成之后,打开命令行工具(win+r,然后输入cmd),输入 node -v,如下 ...

  10. 五大开源 Web 代理服务器横评:Squid、Privoxy、Varnish、Polipo、Tinyproxy

    https://linux.cn/article-7119-1.html Web 代理软件转发 HTTP 请求时并不会改变数据流量.它们可以配置成透明代理,而无需客户端配置.它们还可以作为反向代理放在 ...