网站首页 > java教程 正文
字符集(Character Set)为每个字符分配了唯一的编号,我们不妨将它称为编码值。在C语言中,一个字符除了可以用它的实体(也就是真正的字符)表示,还可以用编码值表示。这种使用编码值来间接地表示字符的方式称为转义字符(Escape Character)。
转义字符以\或者\x开头,以\开头表示后跟八进制形式的编码值,以\x
开头表示后跟十六进制形式的编码值。对于转义字符来说,只能使用八进制或者十六进制。
字符 1、2、3、a、b、c 对应的 ASCII 码的八进制形式分别是 61、62、63、141、142、143,十六进制形式分别是 31、32、33、61、62、63。下面的例子演示了转义字符的用法:
char a = '\61'; //字符1
char b = '\141'; //字符a
char c = '\x31'; //字符1
char d = '\x61'; //字符a
char *str1 = "\x31\x32\x33\x61\x62\x63"; //字符串"123abc"
char *str2 = "\61\62\63\141\142\143"; //字符串"123abc"
char *str3 = "The string is: \61\62\63\x61\x62\x63" //混用八进制和十六进制形式
转义字符既可以用于单个字符,也可以用于字符串,并且一个字符串中可以同时使用八进制形式和十六进制形式。
一个完整的例子:
#include <stdio.h>
int main(){
puts("\x68\164\164\x70://c.biancheng.\x6e\145\x74");
return 0;
}
运行结果:
http://c.biancheng.net
转义字符的初衷是用于 ASCII 编码,所以它的取值范围有限:
- 八进制形式的转义字符最多后跟三个数字,也即\ddd,最大取值是\177;
- 十六进制形式的转义字符最多后跟两个数字,也即\xdd,最大取值是\x7f。
超出范围的转义字符的行为是未定义的,有的编译器会将编码值直接输出,有的编译器会报错。
对于 ASCII 编码,0~31(十进制)范围内的字符为控制字符,它们都是看不见的,不能在显示器上显示,甚至无法从键盘输入,只能用转义字符的形式来表示。不过,直接使用 ASCII 码记忆不方便,也不容易理解,所以,针对常用的控制字符,C语言又定义了简写方式,完整的列表如下:
转义字符 | 意义 | ASCII码值(十进制) |
\a | 响铃(BEL) | 007 |
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) | 009 |
\v | 垂直制表(VT) | 011 |
\' | 单引号 | 039 |
\" | 双引号 | 034 |
\\ | 反斜杠 | 092 |
\n和\t是最常用的两个转义字符:
- \n用来换行,让文本从下一行的开头输出,前面的章节中已经多次使用;
- \t用来占位,一般相当于四个空格,或者 tab 键的功能。
单引号、双引号、反斜杠是特殊的字符,不能直接表示:
- 单引号是字符类型的开头和结尾,要使用\'表示,也即'\'';
- 双引号是字符串的开头和结尾,要使用\"表示,也即"abc\"123";
- 反斜杠是转义字符的开头,要使用\\表示,也即'\\',或者"abc\\123"。
转义字符示例:
#include <stdio.h>
int main(){
puts("C\tC++\tJava\n\"C\" first appeared!");
return 0;
}
运行结果:
C C++ Java
"C" first appeared!
猜你喜欢
- 2024-10-13 Java正则表达式(java正则表达式匹配换行符)
- 2024-10-13 JAVA面试考点合集!常用关键字及修饰符
- 2024-10-13 Java基础入门(Character类)(java character.isletter)
- 2024-10-13 好程序员Java培训分享Java之命名、标示符、变量
- 2024-10-13 JAVA新特性(二)文字块(java文字是什么类型)
- 2024-10-13 “全栈2019”Java第十六章:下划线在数字中的意义
- 2024-10-13 基础教程:Java Character类(java教程 chm)
- 2024-10-13 “全栈2019”Java异常第五章:finally关键字(应用场景)详解
- 2024-10-13 “全栈2019”Java第十四章:二进制、八进制、十六进制
- 2024-10-13 Java零基础程序阅读五(java基础入门课后编程题)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)