K&;R C处理八进制

K&;R C处理八进制,c,octal,kernighan-and-ritchie,C,Octal,Kernighan And Ritchie,因此,首先我读了以下内容: 它告诉我: K&R C和超级用户体验K&R C 允许使用数字8和9。它们被视为十进制整数常量 我有点困惑。。。期待更多。。。我们发现: 它告诉我: 接受八进制转义序列中的8或9 但是,根据: 八进制数字系统,简称oct,是以8为基数的数字系统,使用数字0到7 现在我真的很困惑。我从来没有机会实际使用K&R C编译器。。。那么为什么K&R C接受8和9作为八进制数字。。。这是怎么处理的?在“真正的”八进制系统中,它们的价值是什么 在现代C语言中,自1989年ANSI C

因此,首先我读了以下内容: 它告诉我:

K&R C和超级用户体验K&R C 允许使用数字8和9。它们被视为十进制整数常量

我有点困惑。。。期待更多。。。我们发现:

它告诉我:

接受八进制转义序列中的8或9

但是,根据:

八进制数字系统,简称oct,是以8为基数的数字系统,使用数字0到7


现在我真的很困惑。我从来没有机会实际使用K&R C编译器。。。那么为什么K&R C接受8和9作为八进制数字。。。这是怎么处理的?在“真正的”八进制系统中,它们的价值是什么

在现代C语言中,自1989年ANSI C标准以来,八进制数字仅为0到7(对于字符、字符串文字和整数常量中的八进制转义)

K&R C是1978年第一版Kernighan和Ritchie的《C编程语言》(the C Programming language)中描述的一种(基本上过时的)语言,它允许八进制数为8和9,明显的值分别为8和9


例如,在现代C中,常量
019
是一个语法错误,但在K&R C中,它的值为17。

K&R C不是很严格,因此许多ANSI-C(及更新版本)编译器不允许的事情是允许的


“八进制”数字
0193
相当于
1*8^2+9*8^1+3
。讨厌的东西?是的。

的答案可能会对您有所帮助。是的,很明显这是一个实现工件。对于另一个类似的例子,请查找为什么在一些较旧的K&R C编译器中,两个不同的结构不能有同名的成员字段。