使用十六进制、十进制和oct值在C中写入转义序列?
有人能给我解释一下这个问题吗?我不明白这本书是如何得出它的价值观的,也不明白人们是如何得出答案的 问题是: 假设使用十六进制、十进制和oct值在C中写入转义序列?,c,types,escaping,sequence,C,Types,Escaping,Sequence,有人能给我解释一下这个问题吗?我不明白这本书是如何得出它的价值观的,也不明白人们是如何得出答案的 问题是: 假设ch是一个类型char变量。演示如何使用转义序列、十进制值、八进制字符常量和十六进制字符常量将回车符指定给ch。(假设ASCII代码值。) 答案如下: 使用以下命令将回车符指定给ch: a) 转义序列:ch='\r' b) 十进制值:ch=13 c) 八进制字符常量:ch='\015' d) 十六进制字符常量:ch='\xd' 我理解a部分的答案,但对于b、c和d部分我完全不知所措。你
ch
是一个类型char
变量。演示如何使用转义序列、十进制值、八进制字符常量和十六进制字符常量将回车符指定给ch
。(假设ASCII代码值。)
答案如下:
使用以下命令将回车符指定给ch
:
a) 转义序列:ch='\r'代码>
b) 十进制值:ch=13代码>
c) 八进制字符常量:ch='\015'代码>
d) 十六进制字符常量:ch='\xd'代码>
我理解a部分的答案,但对于b、c和d部分我完全不知所措。你能解释一下吗?来自维基:
计算机和通信设备使用一个符号来表示字符
将每个字符分配给某个对象的字符编码
由位序列表示的整数量,通常为
可以通过网络存储或传输。两个常见的例子
编码为ASCII和Unicode的UTF-8编码
对于问题b、c、d,所有值都是13(十进制)。运行以下代码以了解发生了什么:
char ch1='\r';
printf("Ascii value of carriage return is %d", ch1);
有两个部分来解释答案b-d
您需要知道“回车”或CR(也称为Control-M)的ASCII码点是13。你可以从各种渠道找到答案。可能不太清楚标准是否是这些地方之一(但确实是),U+000D是回车(CR)。Unicode代码点U+0000..U+007F与ASCII相同;Unicode代码点U+0000..U+00FF与ISO 8859-1(拉丁语1)相同
您需要知道,C可以使用十进制数,或者在分配给字符时使用八进制或十六进制转义。诸如'\15'
或'\015'
等符号是八进制字符常量,而八进制15是十进制13。诸如'\xD'
或'\x0D'
(或者实际上,'\x0000000d'
和途中的所有站点)等符号都是十六进制小数常量,十六进制D也是十进制13。(请注意,八进制转义限制为1-3位,但十六进制转义不受此限制,但大于'\xFF'
的值通常具有实现定义的表示形式。)
计算机使用字符编码来表示字符,例如ascii、utf-8、utf-16、iso-8859(),以及其他字符。早期的计算机使用回车符作为打印机指令,将打印头返回到最左边的位置。而且换行字符用于将纸张索引到新行(因此,DOS使用CRLF进行换行的原因是,它在点阵打印机中工作得更好)。无论如何,CR字符在内部作为数值存储在单个8位字节/八位字节或两个字节/八位字节的16位对中,具体取决于您的语言
在这里可以找到常见的ascii字符集:您可以发现CR、'\r',13、0xD等是相同值的不同表示形式
字符串只是一系列字符,可以存储为结尾带有标记(终止符)的字符数组,也可以存储为当前字符串长度的计数。ohhh!现在说得通了!我想我必须找到“r”的ascii码,这样我才能找到“\\\”的数字部分。现在我看到“\r”是一个整数,斜杠包含在其中,用它自己单独的ascii码组成一个字符!非常感谢你的帮助!我曾经迷路过。。。现在我发现:)也谢谢你的帮助!:D