使用无法适应其相关类型的转义序列

Using an escape sequence that can't fit in its related type

本文关键字:类型 转义序列      更新时间:2023-10-16

wI在C++Primer中读到,使用大于其最大相关类型的文字是一个错误,但在互联网上发现转义序列并非如此。

那么,使用无法适应其相关类型的转义序列是错误还是未定义的行为呢
例如x1234。假设Latin-1字符集和一个字节是8位,这不适合char,但仍然是有效的书写文字。

这是实现定义的charwchar_t的行为,以及每个[lex.con]/8 的char8_tchar16_tchar32_t的未定义行为

转义ooo由反斜杠和一个、两个或三个八进制数字组成,用于指定所需字符的值。转义xhhh由反斜杠、x和一个或多个十六进制数字组成,这些数字用于指定所需字符的值。十六进制序列中的位数没有限制。八进制或十六进制数字的序列分别由第一个不是八进制数字或十六进制的字符终止如果字符文字的值不在为char(用于无前缀的字符文字(或wchar_­t(用于带L前缀的字符字面值(定义的实现定义范围内,则该值是实现定义的。[注意:如果前缀为uu8U的字符文字的值超出了为其类型定义的范围,则程序格式错误。--结束注释]

emphasis mine


注释为非规范性注释,但同一节的第3、4和5段涵盖了注释中的文本。