C语言初探
3 变量和数据类型
3.1 大话C语言变量和数据类型
3.2 在屏幕上输出各种类型的数据
3.3 C语言中的整数(short,int,long)
3.4 二进制数、八进制数和十六进制数
3.5 C语言中的正负数及其输出
3.6 整数在内存中是如何存储的,为什么它堪称天才般的设计
3.7 整数的取值范围以及数值溢出
3.8 C语言中的小数(float,double)
3.9 小数在内存中是如何存储的,揭秘诺贝尔奖级别的设计(长篇神文)
3.10 在C语言中使用英文字符
3.11 在C语言中使用中文字符
3.12 C语言到底使用什么编码?谁说C语言使用ASCII码,真是荒谬!
3.13 C语言转义字符
3.14 C语言中的几个重要概念
3.15 C语言加减乘除运算
3.16 C语言自增(++)和自减(--)
3.17 变量的定义位置以及初始值
3.18 运算符的优先级和结合性
3.19 C语言数据类型转换
C语言输入输出 循环结构和选择结构 C语言数组 C语言函数 预处理命令 重要知识点补充 C语言调试
字符集(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语言又定义了简写方式,完整的列表如下: