【问题标题】:Why did C choose certain operators to be the symbol they are? [closed]为什么 C 选择某些运算符作为它们的符号? [关闭]
【发布时间】:2013-01-21 22:54:49
【问题描述】:

正如问题所说,出于教育目的,C为什么选择他们选择的运算符进行相应的操作。对于&当然它只是简单地阅读“和”所以这是有道理的。但是,我看不到 & 和地址或 % 和模数或 * 和指针之间的联系。话虽如此,我也看不到指针与键盘上可用的任何真实符号之间的联系。为什么选择这些符号?他们只是任意的吗?谢谢。

【问题讨论】:

  • 不幸的是,the source of the definitive answer is no longer with us。其他人的答案必然涉及到某种程度的猜测。
  • 我相信*的指针来自于Digital的PDP系列机器中的汇编器。至于为什么 Digital Equipment Corp 的人会选择它,那当然是你接下来要问的问题了,恐怕我不知道——生产第一台 PDP-11 时我才 8 岁1972 年左右。
  • 有趣的问题。最初,Unix(和 C)从Multics OS 中获得了一些灵感——C 和 PL/1(Multics 是在 PL/1 中制作的)有许多相似之处。将 C 关键字(一种面向系统的语言)与 Cobol 关键字(一种面向金融的语言)进行比较也很有趣……
  • 这是一个有趣的问题,虽然我们已经不知道最终答案的主要来源,但我敢打赌,他并没有把这个秘密藏在坟墓里. 必须有其他来源。这是一个合法的问题,可以有一个合法的答案。
  • 很多 C 语法都继承自其前身:B 和 BCPL 语言,如 Dennis Ritchie 在此处cm.bell-labs.com/who/dmr/chist.html 所述。例如,用于指针解引用的* 以及*(A + i) 数组访问语义从B 来到C。现在,为什么在B 中选择这些符号...

标签: c++ c pointers reference operators


【解决方案1】:

如果您查看ASCII table(标准化的前 128 个字符),您会发现字符的选择非常有限。对于这些运算符,他们根本没有其他符号选择。

除了 $、@ 和 `(反引号)字符外,所有可打印字符都被使用。

C 开发的第一台计算机可能在其字符集中没有这三个字符。

【讨论】:

  • 是的,但是你知道,为什么 they (K&R) 选择符号而不是文本:例如,在 Cobol 中,乘法的良好且方便的语法是 MULTIPLY Num1 BY Num2 GIVING Result跨度>
  • 很高兴我从来不用和 Cobol 打交道……我不想尝试破译以如此冗长的方式编写的科学/数学代码……“这仅仅 1.3MB 的代码是对的这里可以平衡你的支票簿……当然,除非它遇到以下任何一种极端情况:……”
  • @ring0 哇,这语法太可怕了。我喜欢读起来像书面英语的语法——但数学就是数学。我的意思是,谁甚至愿意做一些琐碎的数学运算,写出 *、+、-、/ 等单词。
  • 这真的是一个答案吗?松散相关,也许吧。
  • 当时广泛使用 ASR-33 电传打字机。 $ 和 @ 都在场。键盘布局在这里:stackoverflow.com/a/13686414/17034
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 2013-10-12
  • 2019-02-21
  • 2014-10-08
  • 2019-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多