C语言转义字符有哪些?

99ANYc3cd6
预计阅读时长 11 分钟
位置: 首页 C语言 正文

不可打印字符控制符

这类字符用于控制设备(如终端、打印机)的行为,如换行、回车、制表符等。

c语言中转义字符有哪些
(图片来源网络,侵删)
转义字符 名称 作用/ASCII码
\a 响铃 产生一个系统响铃声(警报)。
\b 退格 将光标当前位置向前移动一个位置。 (ASCII 8)
\f 换页 将光标移到下一页的开头。
\n 换行 将光标移到下一行的开头。 (ASCII 10)
\r 回车 将光标移到当前行的开头。 (ASCII 13)
\t 水平制表符 将光标移动到下一个水平制表位(通常是8的倍数列)。 (ASCII 9)
\v 垂直制表符 将光标移到下一行的垂直制表位。

示例代码:

#include <stdio.h>
int main() {
    printf("Hello\tWorld\n"); // 输出: Hello    World (Hello和World之间有一个制表符距离)
    printf("Line 1\rLine 2"); // 输出: Line 2 (光标回到行首,覆盖了"Line 1")
    return 0;
}

特定字符的转义

这些字符在字符串中有特殊含义(如字符串的起始和结束),因此需要用转义字符来表示其本身。

转义字符 名称 作用
\\ 反斜杠 表示一个反斜杠字符 \
\' 单引号 表示一个单引号字符 。
\" 双引号 表示一个双引号字符 。
\? 问号 在一些旧的C编译器中,用于避免三字母词(如 会被解释为 ]),现在很少使用,但标准中仍然保留。

示例代码:

#include <stdio.h>
int main() {
    printf("This is a backslash: \\ \n"); // 输出: This is a backslash: \
    printf("He said, \"C is fun.\"\n");   // 输出: He said, "C is fun."
    printf('A'); // 正确,字符常量用单引号
    // printf("A"); // 正确,字符串常量用双引号
    // printf(' " '); // 错误!编译器会认为字符串在 " 处结束了
    printf("\""); // 正确,表示双引号字符
    return 0;
}

数值转义字符

这类转义字符允许你通过其ASCII码来表示一个字符。

c语言中转义字符有哪些
(图片来源网络,侵删)

a) 八进制转义

格式为:\ 后跟1到3位八进制数字(0-7)。

规则:

  1. 最多3位。
  2. 如果八进制数值超出 0-255 的范围(即超过3位八进制),其行为是未定义的。
  3. \0 是一个非常重要的特例,它代表ASCII码为0的“空字符”(Null Character),用于C语言中字符串的结束。

示例代码:

#include <stdio.h>
int main() {
    // 字符'A'的ASCII码是65,八进制是101
    printf("%c\n", '\101'); // 输出: A
    // 字符'B'的ASCII码是66,八进制是102
    printf("%c\n", '\102'); // 输出: B
    // 空字符,字符串的结束标志
    char str[] = "Hello\0World"; // 实际上只会打印 "Hello"
    printf("%s\n", str); // 输出: Hello
    return 0;
}

b) 十六进制转义

格式为:\x 后跟1位或多位十六进制数字(0-9, a-f, A-F)。

c语言中转义字符有哪些
(图片来源网络,侵删)

规则:

  1. \x 后面的数字数量不限,只要能构成一个有效的十六进制数即可。
  2. 如果十六进制数值超出 0-255 的范围,其行为是未定义的。

示例代码:

#include <stdio.h>
int main() {
    // 字符'A'的ASCII码是65,十六进制是41
    printf("%c\n", '\x41'); // 输出: A
    // 字符'B'的ASCII码是66,十六进制是42
    printf("%c\n", '\x42'); // 输出: B
    // 换行符的ASCII码是10,十六进制是A
    printf("Line 1\xALine 2\n"); // 输出: Line 1
                                  //       Line 2
    return 0;
}

总结表格

转义字符 十六进制值 十进制值 描述
\a 0x07 7 响铃 (BEL)
\b 0x08 8 退格 (BS)
\t 0x09 9 水平制表 (HT)
\n 0x0A 10 换行 (LF)
\v 0x0B 11 垂直制表 (VT)
\f 0x0C 12 换页 (FF)
\r 0x0D 13 回车 (CR)
\\ 0x5C 92 反斜杠
\' 0x27 39 单引号
\" 0x22 34 双引号
\? 0x3F 63 问号
\0 0x00 0 空字符 (NUL)
\ooo - 1-255 八进制表示
\xhh - 1-255 十六进制表示

重要提示

  1. 未定义行为:当使用八进制或十六进制转义字符时,如果计算出的值超过了 0-255 的范围,结果将是未定义的,这意味着程序的行为是不可预测的,可能会导致程序崩溃或产生错误输出。
  2. 可读性:虽然可以用 \x41 来表示 'A',但在代码中直接使用 'A' 的可读性要高得多,转义字符主要用于表示那些无法直接输入或具有特殊控制功能的字符。
-- 展开阅读全文 --
头像
C语言排序涉及哪些核心知识点?
« 上一篇 前天
权重排序如何精准织梦文章?
下一篇 » 昨天

相关文章

取消
微信二维码
支付宝二维码

目录[+]