ISO/IEC 9899:2011 条款6.4.5——字符串字面量
6.4.5 字符串字面量
语法
1、string-literal:
encoding-prefixopt " s-char-sequenceopt "
encoding-prefix:
u8
u
U
L
s-char-sequence:
s-char:
s-char-sequence s-char
s-char:
源字符集中的任一成员,除了双引号 " ,倒斜杠 \ ,或换行字符
escape-sequence
约束
2、毗邻的字符串字面量标记的一个序列不应该同时包括一个宽字符串字面量和一个UTF-8字符串字面量。
描述
3、一个字符串字面量是零个或多个多字节字符封闭在双引号中的一个序列,比如 "xyz" 。一个UTF-8字符串字面量同样如此,除了带有前缀u8。一个宽字符串字面量也同样如此,除了标有前缀L、u或U。
4、同样的考虑应用于一个字符串字面量中的序列的每个元素,就好比它是一个整型字符常量(对于一个字符或UTF-8字符串字面量),或是一个宽字符常量(对于一个宽字符串字面量),除了单引号 ' 要么可以通过自身,要么通过转义序列 \' 来表示,但双引号 " 应该可以通过转义序列 \" 来表示。
语义
5、在翻译阶段6中,由任一毗邻的字符与相同前缀的字符串字面量标记序列所指定的多字节字符序列被拼接成一单个多字节字符序列。如果这些标记中的任何一个具有一个编码前缀,那么结果多字节字符序列被看作为具有相同的前缀;否则,它被看作为一个字符串字面量。不同前缀的宽字符串字面量标记是否可以被拼接,并且如果可以,如何看待结果多字节字符序列是实现定义的。
6、在翻译阶段7中,值为0的一个字节或ASCII码被添加到每个多字节字符序列的后面,形成一个字符串字面量或字面量。[注:一个字符串字面量不需要是一个字符串(见7.1.1),因为一个空字符可以通过一个 \0 转义序列被嵌入进去。]多字节字符序列然后被用于初始化一个静态存储周期的数组,并且长度恰好满足包含该序列。对于字符串字面量,数组元素具有类型char,并且以多字节字符序列的各个字节被初始化。对于UTF-8字符串字面量,数组元素具有类型char,并且以编码为UTF-8的多字节序列的字符被初始化。对于前缀为字母L的宽字符串字面量,数组元素具有类型wchar_t,并且以相应于多字节字符序列(通过mbstowcs函数所定义的,并具有实现定义的当前本地语言)的宽字符序列进行初始化。对于前缀为字母u或U的宽字符串字面量,数组元素分别具有类型char16_t或char32_t,并且以相应于多字节字符序列(通过连续地调用mbrtoc16或mbrtoc32函数,根据适当的类型,并带有实现定义的当前本地语言来定义)的宽字符序列来初始化。包含一个不在执行字符集中所表示的多字节字符或转义序列的一个字符串字面量的值是由实现定义的。
7、这些数组是否为单独提供具有适当值的它们的元素是未指定的。如果程序企图修改这样的一个数组,那么行为是未定义的。
8、例1 这对毗邻的字符串字面量 "\x12" "3" 产生一单个字符串字面量,包含两个字符,其值为 '\x12' 和 '3',因为转义序列恰在毗邻的字符串字面量拼接之前被转换为执行字符集的单个成员。
9、例2 下列毗邻的字符串字面量标记的每个序列
"a" "b" L"c"
"a" L"b" "c"
L"a" "b" L"c"
L"a" L"b" L"c"
是相互等价的字符串字面量——L"abc"
类似的,下列序列的每一个
"a" "b" u"c"
"a" u"b" "c"
u"a" "b" u"c"
u"a" u"b" u"c"
是相互等价的字符串字面量,等价于——u"abc"。
ISO/IEC 9899:2011 条款6.4.5——字符串字面量的更多相关文章
- ISO/IEC 9899:2011 条款5——5.2.1 字符集
5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出 ...
- 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.7.9——初始化
6.7.9 初始化 语法 1.initializer: assignment-expression { initializer-list } { initializer-list ...
- ISO/IEC 9899:2011 条款6.5.1——基本表达式
6.5.1 基本表达式 语法 1.primary-expression: identifier constant string-literal ( expression ) generic ...
- ISO/IEC 9899:2011 条款5——5.2.4 环境限制
5.2.4 环境限制 1.翻译与执行环境都约束了语言翻译器和库的实现.下面概述了对一个顺应标准实现的语言相关的环境限制:库相关的限制在条款7中讨论. 5.2.4.1 翻译限制 1.实现应该能够翻译并执 ...
- ISO/IEC 9899:2011 条款3——术语、定义与符号
3. 术语.定义与符号 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——语言
6 语言 6.1 标记法 1.在本条款中所使用的语法标记法.语义类别(非终结符)用斜体字指示,而字面量单词以及字符集成员(终结符)用粗体字指示.跟在一个非终结符后面的冒号(:)引出其定义.在单独的行中 ...
- ISO/IEC 9899:2011 条款5——5.1.2 执行环境
5.1.2 执行环境 1.定义了两个执行环境:独立式(freestanding)以及宿主的(hosted).在这两种情况下,当一个派定的C函数被执行环境调用时,程序就启动.所有具有静态存储周期的对象应 ...
随机推荐
- CentOS8 NextCloud 私有云存储搭建
本文首发:https://www.somata.work/2019/CentOS8NextCloudBuild.html 之前发现 Owncloud 越来越捞了,推出了企业版和社区版,近几日突然发现原 ...
- BIOS+MBR操作系统引导方式
1. 主引导记录(Master Boot Record,缩写:MBR) 主引导记录又叫做主引导扇区,是计算机开机后启动操作系统时所必须要读取的硬盘首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)= ...
- flask中使用ajax 处理前端请求,结果展示在同一页面,不点击页面不展示
在同一页面点击按钮,后端处理后展示在同一页面,不点击隐藏该结果:与上一篇大同小异,需要在 html.flask.js微调 效果展示: (未点击查询) (点击查询) html: <html> ...
- 安装gitlab并汉化
简介: GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. 它拥有与GitHub类似的功能,能够浏览源代码 ...
- BZOJ4802 欧拉函数 (Pollard-Rho Miller-Robin)
题目 求大数的欧拉函数φ\varphiφ 题解 Pollard-Rho 板子 CODE #pragma GCC optimize (3) #include <bits/stdc++.h> ...
- VBA字典
'字典并不存在于VBA中,需要调用 '调用方式1(前期绑定): '工具 --引用 - -浏览 - -找到scrrun.dll - 确定 '调用方式2 (后期绑定): ' Set d = CreateO ...
- 31、[源码]-AOP原理-AnnotationAwareAspectJAutoProxyCreato机
31.[源码]-AOP原理-AnnotationAwareAspectJAutoProxyCreato机
- mysql查询重复数据
SELECT * FROM oa_user ) ORDER BY UserName oa_user表名,UserName需要查重复的字段名
- springboot使用rabbitmq-Topic模式,亲自实测能用!!!
0.项目目录截图 ===================================================================== springboot的版本: <gr ...
- 将Eclipse,MyEclipse等编辑器的项目管理框颜色改为护眼豆沙绿的方法
转载链接:https://blog.csdn.net/caibaoH/article/details/77005977