转义字符: 为什么 '0' 的值不是 0 (escape character)

转义字符: 为什么 '0' 的值不是 0 (escape character)#

通常而言, 字符字面值直接表示要显示的内容, 例如 '0', 'a', ',' 等. 所以 cout << '0'; 会直接输出 0.

但是我们又认为, 数值 0 也是一个比较重要的字符, 可 '0' 已经用于表示数字 0 了, 于是我们决定用 '\0' 来表示数值 0.

其中, \ 是转义符号, 加上它表示该字符是有特殊的含义, 例如 '\0' 表示数值 0, '\n' 表示换行符 (newline), '\'' 表示单引号.

这引出另一个问题: 如果我要输出 \ 呢? 由于 \ 已经作为了转义字符, 我们使用 '\\' 来表示字符 \.

个位数与数字字符间的转换#

intchar 之间的转换仅基于数值:

'\0'#
1int  value = 0;
2char digit = value;  // '\0' 字符, 即数值 0
'0'#
1int  value = 30;
2char digit = value;  // '0' 字符, 即数字 0

也就是说, 由于 '0' 的值不是 0, 如果想得到个位数对应的显示字符, 我们需要对它的值进行偏移:

整数个位数转换为对应数字字符#
1int  value = 5;
2char digit = value + '0';
数字字符转换为对应整数个位数#
1char digit = '5';
2int  value = digit - '0';