K& R C处理八进制

时间:2013-11-11 07:53:27

标签: c octal kernighan-and-ritchie

所以,首先我读了以下内容: 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,是base-8数字系统,使用数字0到7.

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:4)

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

K& RC,1978年第1版Kernighan和Ritchie" C编程语言"描述的(很大程度上已过时)语言,允许8和9的八进制数,显而易见值分别为8和9。

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