3

有人可以向我解释这个问题吗?我不明白这本书是如何得出它的价值的,也不明白人们是如何得出答案的。

这是问题:

假设这ch是一个类型char变量。ch展示如何使用转义序列、十进制值、八进制字符常量和十六进制字符常量来分配回车符。(假设 ASCII 码值。)

这是答案:

使用以下命令分配回车符ch

a) 转义序列: ch='\r';
b) 十进制值: ch=13;
c) 八进制字符常量: ch='\015';
d) 十六进制字符常量: ch='\xd';

我理解 a 部分的答案,但完全迷失了 b、c 和 d 部分。你可以解释吗?

4

3 回答 3

3

来自维基:

计算机和通信设备使用字符编码来表示字符,该字符编码将每个字符分配给某物——通常是由位序列表示的整数——可以通过网络存储或传输。常用编码的两个示例是 ASCII 和 Unicode 的 UTF-8 编码。

对于您的问题 b、c、d - 所有值都是 13(十进制)。运行此代码以了解发生了什么:

char ch1='\r';
printf("Ascii value of carriage return is %d", ch1);
于 2013-10-04T05:22:48.907 回答
3

解释答案有两个部分。

  1. 您需要知道“回车”或 CR(也称为Control-M)的 ASCII 码位是 13。您可以从各种来源中找到它。Unicode标准是这些地方之一(但它是)可能并不明显,而 U+000D 是回车符(CR)。Unicode 代码点 U+0000..U+007F 与 ASCII 相同;Unicode 代码点 U+0000..U+00FF 与 ISO 8859-1 (Latin 1) 相同。

  2. 您需要知道 C 在分配给字符时可以使用十进制数字,或者八进制或十六进制转义。诸如'\15'or之类的符号'\015'是八进制字符常量,八进制 15 是十进制 13。诸如'\xD'or '\x0D'(或者,实际上,'\x0000000000000D'以及 all stop en route)之类的符号是十六进制常量,十六进制 D 也是十进制 13。(请注意,八进制转义仅限于1-3 位数字,但十六进制转义不受限制,但值大于'\xFF'通常具有实现定义的表示。)

于 2013-10-04T05:53:24.680 回答
3

计算机使用字符编码来表示字符,例如 ascii、utf-8、utf-16、iso-8859 ( http://en.wikipedia.org/wiki/ISO/IEC_8859-1 ) 等。早期计算机使用回车符作为打印机指令,将打印头返回到最左边的位置。换行符用于将纸张索引到新行(因此 DOS 使用 CRLF 表示行,它在点阵打印机上效果更好)。无论如何,CR 字符在内部存储为单个 8 位字节/八位字节或 16 位两个字节/八位字节对中的数值,具体取决于您的语言。

常见的 ascii 字符集可在此处找到: http ://www.asciitable.com/您可以发现 CR、'\r'、13、0xD 等是相同值的不同表示。

字符串只是作为字符数组存储的字符序列,末尾有一个标记(终止符),或者与当前字符串长度的计数一起存储。

于 2013-10-04T05:54:03.753 回答