gpt4 book ai didi

c - C中转义字符的大小

转载 作者:太空宇宙 更新时间:2023-11-04 00:27:10 25 4
gpt4 key购买 nike

为什么下面的程序会输出5?

#include <stdio.h> 
main()
{
char str[]="S\065AB";
printf("\n%d", sizeof(str));
}

最佳答案

简答:参见 David Heffernan 的回答。

长答案:

C(99) 标准的第 6.4.4.4 节规定了“字符常量”,其中(除其他外)包括简单转义序列(例如 '\n'、'\\')、八进制转义序列(例如 '\0 ')、十六进制转义序列(例如 '\x0f')和通用字符名称(例如 '\u0112')。

您示例中的反斜杠引入了这样一个转义/八进制/十六进制/通用常量。以下八进制数字 ([0-7]) 使其成为八进制常量(十六进制为 '\x',通用为 '\u',转义序列为 '\['"?\abfnrtv]')。

一旦消耗了三个八进制数字或遇到非八进制数字,该八进制常量就会终止。

即,'\065' 等同于 '\x35' 或(十进制)53,在 ASCII 表上(巧合的是)'5' - 无论如何,一个字符。

关于c - C中转义字符的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5193372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com