3

所以,首先我阅读了以下内容:http: //www.hpc.unimelb.edu.au/nec/g1af02e/chap1.html它告诉我以下内容:

K&R C 和 SUPER-UX K&R C 允许使用数字 8 和 9。它们被认为是十进制整数常量。

我有点困惑......寻找更多......发现这个:http ://docs.oracle.com/cd/E19205-01/819-5265/bjbfb/index.html

它告诉我这个:

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

但是,根据:http ://en.wikipedia.org/wiki/Octal

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

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

4

2 回答 2

5

K&R C 不是很严格,所以很多 ANSI-C(和更新的)编译器不允许的东西都是允许的。

“八进制”数 0193相当于1*8^2 + 9*8^1 + 3. 憎恶?是的。

于 2013-11-11T08:14:07.213 回答
4

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

K&R C 是 1978 年第一版 Kernighan 和 Ritchie 的“C 编程语言”所描述的(基本上已经过时的)语言,它允许八进制数中的 8 和 9,明显的值分别为 8 和 9。

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

于 2013-11-11T08:13:02.050 回答