c - 使用八进制表示 ASCII 的目的

标签 c octal

为什么 C 程序员会对 ASCII 值而不是十进制使用转义序列(八进制/十六进制)?

跟进:这与性能或便携性有关吗?

示例:

char c = '\075';

最佳答案

您使用八进制或十六进制是因为无法在字 rune 字或字符串文字中指定十进制代码。八进制在 PDP-11 代码中很普遍。现在,使用十六进制可能更有意义,尽管 '\0''\x0' 更紧凑(所以使用 '\0' 当你用 null 终止一个字符串等时)。

此外,请注意 "\x0ABad choice" 没有您可能期望的含义,而 "\012007 wins" 可能有。 (不同之处在于,十六进制转义会一直运行,直到遇到非十六进制数字,而八进制转义最多会在 3 位数字后停止。要获得预期结果,您需要 "\x0A""Bad choice " 使用‘相邻字符串文字连接’。)

这与性能无关,也与便携性无关。编写 '\x41''\101' 而不是 'A' 是降低代码的可移植性和可读性的一种方式。只有在没有更好的方式来表示字符时,您才应该考虑使用转义序列。

关于c - 使用八进制表示 ASCII 的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27834410/

相关文章:

parsing - 在 Tcl 中处理带前导零的数字

PHP 关联数组意外行为 - 为什么?

c - 帮助在 Xcode 上用 C 语言打开文件

c - 将文件作为参数传递并读取数据

c - 如何在进行系统调用时阻止控制台窗口出现?

common-lisp - 如何在 Common Lisp 中将十进制数转换为八进制数字列表?

c++ - 在 C++ 中使用循环进行八进制转换

Java 和八进制数

检查数组是否包含所有元素

c - 创建一个头文件来扫描整数而不使用 stdio.h(scanf)