3.2 数据表示与程序构成相关术语
3.6 比特
bit执行环境中的数据存储单位,它足以容纳一个只能取两个值之一的对象。未必能够单独表示对象中每一位的地址。
3.7 字节
byte执行环境中的可寻址数据存储单位,它足以容纳执行环境基本字符集中的任一成员。
注 1:可以唯一地表达对象中每个单独字节的地址。
3.8 低位比特
low-order bit一个字节内的最低有效位。
3.9 高位比特
high-order bit一个字节内的最高有效位。
3.10 字符
character在抽象意义上,字符是某个元素集合中的成员,该集合用于组织、控制或表示数据。
3.10.1 字符
charactersingle-byte characterC 语境下,能够装入一个字节的比特表示。
3.10.2 多字节字符
multibyte character由一个或多个字节构成的序列,用于表示源环境或执行环境的扩展字符集中的某个成员。
注 1:扩展字符集是基本字符集的超集。
3.10.3 宽字符
wide characterwchar_t类型对象可表示的值,并且能够表示当前区域设置中的任意字符。
3.11 约束
constraint一种语法上的或语义上的限制,用于解释语言元素的表述。
3.12 正确舍入结果
correctly rounded result按当前舍入模式,在结果格式中表示出来的、最接近“若计算具有无限范围和无限精度时应得到的结果”的那个结果。
注 1:在本文档中,“正确舍入”既可以用于产生正确舍入结果的运算,也可以用于这种运算的输入。
注 2:如果结果格式包含无穷大,那么对极大幅值结果适用 ISO/IEC 60559 或实现定义规则。
3.13 诊断消息
diagnostic message属于实现消息输出中某个实现定义子集的消息。
3.14 前向引用
forward reference指向本文档后续子条款的引用,该后续子条款包含与当前子条款相关的附加信息。
3.15 实现
implementation一组特定的软件,它在特定翻译环境中、按特定控制选项运行,为某个特定执行环境中的程序执行翻译,并支持函数执行。
3.16 实现限度
implementation limit实现对程序施加的限制。
3.17 内存位置
memory location标量类型的一个对象,或一段相邻的、宽度均非零的位字段所构成的极大序列,两者之一。
阅读提示:为什么“内存位置”重要?
并发语义通常不是围绕“对象”定义,而是围绕“内存位置”定义。标准在这里区分哪些部分可以互不干扰地并发访问,后面读原子操作、数据竞争等内容时会反复用到这个术语。
注 1:两个执行线程可以分别更新和访问不同的内存位置,而不会彼此干扰。
注 2:位字段与其相邻的非位字段成员位于不同的内存位置。若两个位字段中一个声明在嵌套结构声明内部而另一个不是,或者二者之间以一个长度为零的位字段声明隔开,或者二者之间隔着一个非位字段成员声明,也同样如此。如果同一结构中两个非原子位字段之间声明的所有成员也都是位字段且宽度非零,那么无论这些中间位字段的宽度为何,并发更新这两个非原子位字段都不是安全的。
示例:如下声明的结构体:
struct {
char a;
int b:5, c:11, :0, d:8;
struct { int ee:8; } e;
}2
3
4
5
包含四个独立的内存位置:成员 a、位字段 d 和 e.ee 各自都是独立的内存位置,因此可以并发修改而互不干扰。位字段 b 和 c 共同构成第四个内存位置。位字段 b 和 c 不能被并发修改,但例如 b 和 a 则可以。
3.18 对象
object执行环境中的一段数据存储区域,其内容能够表示值。
注 1:当对象被引用时,可以将其解释为具有某个特定类型;见 6.3.2.1。
3.19 形参
parameter又称
formal parameter;formal argument这一说法已弃用。指作为函数声明或函数定义一部分而声明的对象,它在进入函数时获得值;或者,类函数宏定义中宏名后圆括号内、以逗号分隔的标识符。