0195可以当作八进制数?

17次阅读

在看《C陷阱与缺陷》一书中,其中1.4整型常量一节中有这么一段话:

此外,许多编译器会把8和9也作为八进制数字处理,这样多少有点奇怪的处理方式来自八进制数的定义。例如0195的含义是141(十进制)或者0215(八进制)。

我看了下八进制数的wiki, 没有发现定义中说0195也可以当八进制数。 难道八进制数定义另有隐情?

另外,能不能指出个能把常量0195识别为141的编译器?

selfboot

那本书是很多很多很多年以前写的,开始写的时候甚至C标准(c89)都还没制定完(86年的素材,88年出版),所以这里的情况很可能指的是当时的一些编译器(你可以试试TurboC 2.0)。现在主流的C编译器都可以正确给出提示(WARNING/ERROR),所以不用太关注这个问题。

felix021

正文完