首先,我读了以下文章:http://www.hpc.unimelb.edu.au/nec/g1af02e/chap1.html,它告诉我如下:
K&R C和SUPER&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作为八进制数字..。这是怎么处理的?它们在“真实”八进制系统中的价值是什么?
发布于 2013-11-11 08:14:07
K&R C并不是很严格,所以ANSI-C (和更新的)编译器所不允许的很多事情都是不允许的。
“八进制”数字0193
将相当于1*8^2 + 9*8^1 + 3
。可憎的东西?是。
发布于 2013-11-11 08:13:02
在现代C中,自1989年ANSI C标准以来,八进制数字仅为0到7(对于字符和字符串文本以及整数常量中的八进制转义)。
K&R C是1978年第一版Kernighan和Ritchie的“C编程语言”所描述的(基本上过时的)语言,允许8和9的八进制数,其明显值分别为8和9。
例如,在现代C中,常量019
是语法错误,但在K&R C中它的值为17。
https://stackoverflow.com/questions/19901347
复制相似问题