C语言合法字符型常数有哪些?

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

在 C 语言中,字符型常数是指用单引号括起来的一个字符,它代表的是该字符在 ASCII 编码表中的整数值(一个整数)。

c语言中 合法的字符型常数是
(图片来源网络,侵删)

合法的字符型常数可以分为以下几类:


普通可打印字符

这是最常见的形式,即键盘上可以输入的可见字符。

格式: '字符'

示例:

c语言中 合法的字符型常数是
(图片来源网络,侵删)
'A'       // 代表大写字母 A
'b'       // 代表小写字母 b
'9'       // 代表数字字符 9
'$'       // 代表美元符号 $
' '       // 代表空格字符

注意:

  • 必须使用单引号 ,而不是双引号 ,双引号代表的是字符串。
  • 单引号内只能有一个字符。'ab' 是不合法的字符型常数,而是一个非法的表达式。

转义字符

当我们要表示一些特殊字符(如换行、制表符)或者无法直接输入的字符(如单引号本身)时,就需要使用转义字符。

转义字符由一个反斜杠 \ 后跟一个特定的字符或数字序列组成。

格式: '\转义序列'

c语言中 合法的字符型常数是
(图片来源网络,侵删)

常见的转义字符:

转义序列 名称 ASCII 值 说明
\n 换行 10 光标移到下一行开头
\t 水平制表 9 光标移到下一个制表位
\r 回车 13 光标移到当前行开头
\\ 反斜杠 92 代表一个反斜杠字符
\' 单引号 39 代表一个单引号字符
\" 双引号 34 代表一个双引号字符(在字符常量中不常用,但在字符串中常用)
\b 退格 8 光标回退一格
\f 换页 12 换到下一页
\v 垂直制表 11 垂直方向跳格

示例:

'\n'      // 代表换行符
'\t'      // 代表制表符
'\\'      // 代表反斜杠字符 \
'\''      // 代表单引号字符 ',这在要存储单引号本身时非常有用

八进制转义序列

可以使用字符的八进制 ASCII 码来表示该字符。

格式: '\ooo' (o 是 0-7 的数字)

示例:

'\101'    // 1*8^2 + 0*8^1 + 1*8^0 = 65,代表字符 'A'
'\12'     // 1*8^1 + 2*8^0 = 10,代表换行符 '\n' (等同于 '\n')
'\0'      // 0*8^1 + 0*8^0 = 0,代表空字符,非常重要!是字符串的结束标志。
'\141'    // 1*8^2 + 4*8^1 + 1*8^0 = 97,代表字符 'a'

十六进制转义序列

可以使用字符的十六进制 ASCII 码来表示该字符。

格式: '\xhh' (h 是 0-9, a-f, A-F 的数字)

示例:

'\x41'    // 4*16^1 + 1*16^0 = 65,代表字符 'A'
'\xA'     // 10*16^1 = 160 (注意,A前面可以没有0)
'\x0a'    // 0*16^1 + 10*16^0 = 10,代表换行符 '\n' (等同于 '\n')
'\x61'    // 6*16^1 + 1*16^0 = 97,代表字符 'a'

总结与注意事项

类型 示例 合法性 描述
普通字符 'a' 合法 代表字母 'a'
合法 代表空格
'ab' 非法 单引号内只能有一个字符
转义字符 '\n' 合法 代表换行符
'\\' 合法 代表反斜杠 \
'\'' 合法 代表单引号
八进制 '\101' 合法 代表 'A'
'\0' 合法 代表空字符,ASCII值为0
十六进制 '\x41' 合法 代表 'A'
'\x0A' 合法 代表换行符
非法情况 "a" 非法 双引号代表字符串,不是字符常数
非法 单引号内不能为空
'\088' 非法 八进制序列中不能包含数字8或9

代码示例

下面的代码展示了字符型常量的本质——它们就是整数。

#include <stdio.h>
int main() {
    // 定义几个字符型常数
    char ch1 = 'A';
    char ch2 = '\n';
    char ch3 = '\x41'; // 和 'A' 等价
    char ch4 = 65;     // 直接使用ASCII码赋值,和 'A' 等价
    // 1. 字符型常数可以以字符形式输出
    printf("ch1 (as char): %c\n", ch1); // 输出: A
    // 2. 字符型常数可以以整数形式输出(输出其ASCII码值)
    printf("ch1 (as int): %d\n", ch1);  // 输出: 65
    printf("ch2 (as int): %d\n", ch2);  // 输出: 10 (换行符的ASCII码)
    printf("ch3 (as int): %d\n", ch3);  // 输出: 65
    // 3. 可以直接进行算术运算
    char ch5 = 'B';
    printf("'B' - 'A' = %d\n", ch5 - ch1); // 输出: 1 (因为 'B'的ASCII码是66, 'A'是65)
    // 4. '\0' 的使用
    char ch6 = '\0';
    printf("The value of '\\0' is: %d\n", ch6); // 输出: 0
    return 0;
}

希望这个详细的解释能帮助你完全理解 C 语言中的字符型常数!

-- 展开阅读全文 --
头像
dede百度编辑器水印如何添加或设置?
« 上一篇 02-05
dede5.7如何调用相关文章?
下一篇 » 02-05
取消
微信二维码
支付宝二维码

目录[+]