在看《C陷阱与缺陷》一书中,其中1.4整型常量一节中有这么一段话:
此外,许多编译器会把8和9也作为八进制数字处理,这样多少有点奇怪的处理方式来自八进制数的定义。例如0195的含义是141(十进制)或者0215(八进制)。
我看了下八进制数的wiki, 没有发现定义中说0195也可以当八进制数。 难道八进制数定义另有隐情?
另外,能不能指出个能把常量0195识别为141的编译器?
那本书是很多很多很多年以前写的,开始写的时候甚至C标准(c89)都还没制定完(86年的素材,88年出版),所以这里的情况很可能指的是当时的一些编译器(你可以试试TurboC 2.0)。现在主流的C编译器都可以正确给出提示(WARNING/ERROR),所以不用太关注这个问题。
欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。 温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。