所以,首先我读了以下内容: 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作为八进制数字......这是如何处理的?它们在“真正的”八进制系统中的价值是什么?
答案 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.