6.2.4 对象的存储持久性 1.一个对象具有一个存储持久性来确定其生命周期.一共有四种存储持久性:静态的,线程的,自动的,以及分配的.分配存储在7.22.3中描述. 2.一个对象的生命周期是程序执行的一部分,在此期间该存储空间确保能为该对象进行保留.一个对象存在就有一个常量地址[注:常量地址意思是在可能不同时刻所构建的两个指针指向同一个对象,这两个指针的值是相等的.在同一个程序的两个不同执行期间,地址可能不同.也就是说,对于一个可执行程序,第一次运行获得的一个对象地址与第二次执行获得该对象的地…
6.2.8 对象的对齐 1.完整的对象类型具有对齐要求,对齐要求是对该类型对象可以在哪个地址进行分配的放置限制.一个对齐是一个实现定义的整数值,表示一个给定对象可以分配在相继两个地址之间跨多少字节的位置.一个对象类型指示了那个类型的每一个对象的对齐要求:可以使用_Alignas关键字来请求更严格的对齐. 2.一个基本对齐用一个小于等于实现的所有上下文中所支持的最大对齐的一个对齐来表示,实现在所有上下文中所用的最大对齐为_Alignof(max_align_t). 3.一个扩展对齐用一个大于_Al…
3. 术语.定义与符号 1.对于此国际标准的意图,应用了以下定义.其它术语是在用斜体类型或一个语法规则左侧出现的地方定义.在本国际标准中所显式定义的术语不被假定为对其它地方所定义的类似术语的隐式引用.在本国际标准中没被定义的术语将根据ISO/IEC 2382-1进行解释.在本国际标准中没被定义的数学符号将根据ISO 31-11中进行解释. 3.1 访问 1.<运行时行为>读或修改一个对象的值 2.注1:这里,这两个行为中同时只有一个发生,要么“读”,要么“修改”被使用. 3.注2:“修改”包括…
5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出,以及一组零个或多个区域特定的成员(这些不是基本字符集的成员),称为扩展字符.这些成员结合起来也被称为扩展字符集.执行字符集的成员的值是由实现定义的. 2.在一个字符常量或字符串字面量中,执行字符集的成员应该由相应的源字符集的成员或通过由倒斜杠\后面跟一到多个字符所构成的转义序列来表示.所以比特均为…
6.4.2 标识符 6.4.2.1 通用 语法 1.identifier: identifier-nodigit identifier    identifier-nondigit identifier    digit identifier-nondigit: nondigit         universal-character-name other implementation-defined characters nondigit:以下字符之一 _    a到z    A到Z digi…
6.4.3 通用字符名 语法 1.通用字符名: universal_character-name: \u hex-quad(四位十六进制数) \U hex-quad hex-quad hex-quad: hexadecimal-digit    hexadecimal-digit    hexadecimal-digit    hexadecimal-digit 约束 2.一个通用字符名不应该指定一个字符,其短标识符比00A0要小,除了0024($),0040(@),0060(`)之外,也不应该…
5.1.2 执行环境 1.定义了两个执行环境:独立式(freestanding)以及宿主的(hosted).在这两种情况下,当一个派定的C函数被执行环境调用时,程序就启动.所有具有静态存储周期的对象应该在程序启动前被初始化(设置为它们的初始值).这种初始化的方式以及时间点是未指定的.程序终止将控制返回给执行环境. 5.1.2.1 独立式环境 1.在一个独立式环境中(在此环境中下,C程序可以无需借助任何操作系统的帮助进行执行[译者注:比如通过虚拟机解释执行]),在程序启动时所调用的函数名和类型是由…
4. 标准顺从 1.在本国际标准中,“应该”被解释为对一个实现或一个程序的要求:相反地,“不该”被解释为禁用. 2.如果违反了出现在一个强制规定或运行时强制规定之外的“应该”或“不该”要求,那么该行为是未定义的.否则,未定义行为在本国际标准中通过“未定义行为”这一短语或通过对任一显式定义的行为的缺省进行指定.在这三种表达方式之中没有特别的重点强调:它们都描述了“未定义的行为”. 3.在所有其它方面都正确的一个程序且操作正确的数据,却含有未指定的行为,那么应该是一个正确的程序并且其行为符号5.1.…
6 语言 6.1 标记法 1.在本条款中所使用的语法标记法.语义类别(非终结符)用斜体字指示,而字面量单词以及字符集成员(终结符)用粗体字指示.跟在一个非终结符后面的冒号(:)引出其定义.在单独的行中列出可替换的定义,除了当用单词“之一”开头时.一个可选的符号用下标“opt”来指示,这样 { expressionopt } 指示一个在大括号中包裹的可选的表达式. 2.当在文本中引用了语义类别时,它们不用斜体标明并且单词用空格而不是连接号(-)来分隔. 3.在附录A中给出了语言语法的概述. 6.2…
6.3 转换 1.有些操作符将操作数的值自动地从一种类型转换为另一种.本子条款指定了从这么一个隐式转换所要求的结果,以及从一个投射操作(一个显式转换)所要求的结果.在6.3.1.8中所列出的信息概括了由大部分普通操作符所执行的转换:它由6.5中的每个操作符的讨论作为要求而补充. 2.对一个操作数值转换为一个兼容类型不会导致对该值或表示的改变. 6.3.1 算术操作数 6.3.2 其它操作数…