应该在编程语言中删除或更改隐式八进制编码吗?

Byr*_*ock 2 language-agnostic types

我在看这个 问题.基本上具有前导零使得数字被解释为八进制.我用多种语言多次遇到这个问题.

为什么语言没有明确要求您使用函数调用或类型(强类型语言)指定八进制,如:

oct variable = 2;
Run Code Online (Sandbox Code Playgroud)

我能理解为什么十六进制(0x0234)具有这种格式.十六进制非常有用.数据库中的整数永远不会有x.

但八进制数字0123看起来像是整数并且很难处理.我从未使用八进制任何东西.

任何人都可以解释这种用法背后的理由吗?这只是一点历史遗迹吗?

Joh*_*kin 5

它主要是历史性的.我见过的最好的解决方案是在新版本的Python中,其中八进制用一个特殊的前缀字符"o"表示,非常像十六进制的"x"前缀:

0o10 == 0x8 == 8
Run Code Online (Sandbox Code Playgroud)