本节书摘来自异步社区《c陷阱与缺陷》一书中的第1章,第1.4节,作者 【美】andrew koenig,更多章节内容可以访问云栖社区“异步社区”公众号查看
如果一个整型常量的第一个字符是数字0,那么该常量将被视作八进制数。因此,10与010的含义截然不同。此外,许多c编译器会把8和9也作为八进制数字处理。这种多少有点奇怪的处理方式来自八进制数的定义。例如,0195的含义是1×82+9×81+5×80,也就是141(十进制)或者0215(八进制)。我们当然不建议这种用法,ansi c标准也禁止这种用法。
需要注意这种情况,有时候在上下文中为了格式对齐的需要,可能无意中将十进制数写成了八进制数,例如: