Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么C#中没有八进制文字?_C# - Fatal编程技术网

为什么C#中没有八进制文字?

为什么C#中没有八进制文字?,c#,C#,为什么那些开发C#的人在十六进制和二进制文字之外不包括八进制文字?做出这个决定的原因是什么?很多人使用0作为视觉对齐的前缀,在编程语言中,八进制文字通常被视为是一种“步兵” var x = 11; var y = 011; 当十六进制和二进制文字需要一个特殊的字母数字前缀0x或0b时,这种情况可能会意外发生。现代语言试图减少这些类型的步兵。八进制编码是20世纪50年代末和60年代计算机的遗物。当时,它非常有用,公司制造的机器具有6位字节,通常封装在18位或36位字中。6位对每个人来说都足够了

为什么那些开发C#的人在十六进制和二进制文字之外不包括八进制文字?做出这个决定的原因是什么?

很多人使用0作为视觉对齐的前缀,在编程语言中,八进制文字通常被视为是一种“步兵”

var x =  11;
var y = 011;

当十六进制和二进制文字需要一个特殊的字母数字前缀
0x
0b
时,这种情况可能会意外发生。现代语言试图减少这些类型的步兵。

八进制编码是20世纪50年代末和60年代计算机的遗物。当时,它非常有用,公司制造的机器具有6位字节,通常封装在18位或36位字中。6位对每个人来说都足够了,电传打字机和打印机还没有小写字母,英语是主要语言

八进制对于这样的6位字节很好,需要2位,并且所有的位都被使用

这就不可避免地削弱了IBM-360的影响力,它有一个8位字节。1970年的PDP-11非常重要,它是一台价格合理的16位机器,具有8位字节。大约在1975年,古老的体系结构获得了恐龙的地位,程序员开始大力支持十六进制。八进制编码8位字节是笨拙的,十六进制给了我们2位的数字。当时的微处理器套件都使用十六进制

Octal确实比它应该持续的时间长了很多。DEC手册始终使用八进制表示法,即使是8位。C语言将其引入了花括号语言,狭义地说,它开始在GE-635和PDP-8、6位机器上使用。狭义地说,直到PDP-11,它才变成真正的C,但种子被播种了。使用一种非常简单的方法来指定八进制值,文本上的前导0


产生了无数的bug和极度混乱的程序员。C#团队从他们的花括号语言中彻底删除了这些常见的bug生成器。他们做得很好。

我强烈怀疑这是因为他们很少有用,但他们可能非常烦人。在Java中,
intx=010
intx=10不同。我不介意使用显式说明符,但在我看来,仅仅将前导零设为有效值是可怕的。@HansPassant这与支配地位无关,八进制仍然是三元组非常有用的基数。这也可以在chmod中看到。是的,但八进制文字也可以用0o来显示,这不是比0更符合逻辑吗?是的,但它仍然可以用0o或类似的方式来开发,在您的特定示例中,可以使用u而不是0,不是吗?这是一个不常见的用例,所以他们可能决定根本不包括它。