字符串中(或不在,就此而言)中的所有字符都只是数字。在 c 中,字符串存储为 8 位数字的数组,末尾为 0 以指示字符串的结尾(“空终止符”)。转义序列的处理方式与常规字符完全相同:它们的 ascii 值存储在数组中。在您的示例中,以下是相同的:
"foo \x61 \042 baa"
"foo a \" baa"
{ 'f', 'o', 'o', ' ', '\x61', ' ', '\042', ' ', 'b', 'a', 'a', '\0'}
{ 'f', 'o', 'o', ' ', 'a', ' ', '"', ' ', 'b', 'a', 'a', '\0'}
{ 'f', 'o', 'o', ' ', 0x61, ' ', 042, ' ', 'b', 'a', 'a', '\0'}
{0x66, 0x6f, 0x6f, 0x20, 0x61, 0x20, 0x22, 0x20, 0x62, 0x61, 0x61, 0x0}
{ 102, 111, 111, 32, 97, 32, 34, 32, 98, 97, 97, 0}
{0146, 0157, 0157, 040, 0141, 040, 042, 040, 0142, 0141, 0141, 0}
我是一名优秀的程序员,十分优秀!