为什么C语言选择特定的符号作为运算符?

9

正如问题所说,出于教育目的,为什么C语言选择了它们对应操作的运算符。对于&,当然只是简单地读作“and”,因此这很有意义。然而,我看不出&和地址、%和模数或*和指针之间的任何联系。也就是说,我也看不出指针和键盘上任何实际符号之间的联系。为什么选择了这些符号?它们是否只是随意选择的?谢谢。


17
不幸的是,“确定答案的来源已经离开我们”(http://www.wired.com/wiredenterprise/2011/10/dennis-ritchie/)。其他人的答案必然涉及到某种程度的猜测。 - Sergey Kalinichenko
3
有趣的问题。最初,Unix(和C语言)从Multics操作系统中获得了一些灵感 - C语言和PL/1语言(Multics是用PL/1制作的)有许多相似之处。将面向系统的C语言关键字与面向金融的Cobol语言关键字进行比较也很有趣... - Déjà vu
5
这是一个有趣的问题,尽管能提供明确答案的主要信息来源已经不在我们身边了,但我敢打赌他没有把答案带到坟墓里。一定还有其他信息来源。这是一个合法的问题,并且可能会有一个合法的答案。 - David
3
C语言的很多语法特性都继承自其前身B和BCPL语言,详见Dennis Ritchie在此处的描述:http://cm.bell-labs.com/who/dmr/chist.html。例如,指针解引用运算符`*`以及数组访问语义`*(A + i)` 这些特性从B语言传承到了C语言中。现在问题是,为什么B语言选择了这些符号... - AnT stands with Russia
2
& 符号(ampersand,和)的名称以字母 a 开头,与单词“address”相同。模数与除法密切相关,而 % 符号包括 / - Keith Thompson
显示剩余11条评论
1个回答

1
如果您查看ASCII表(标准化的前128个字符),您会发现字符选择非常有限。对于那些运算符,他们根本没有其他符号可选。
除了$、@和`(反引号)字符,所有可打印字符都被使用了。
很可能最初开发C语言的计算机在其字符集中没有这三个字符。

是的,但你看,为什么他们(K&R)选择符号而不是文本:例如,在Cobol中,乘法的漂亮和方便的语法是MULTIPLY Num1 BY Num2 GIVING Result - Déjà vu
很高兴我从来没有涉及到 COBOL……我讨厌尝试去解读用这种冗长方式编写的科学/数学代码…… “这仅有的 1.3MB 代码可以平衡您的支票簿……除非当然,它遇到以下任何一种边界情况:……” - twalberg
这真的是一个答案吗?或许与之略有关联。 - David
3
ASR-33电传打字机曾经广泛使用,其中包括字符$和@。键盘布局在此处:https://dev59.com/nWvXa4cB1Zd3GeqPK5xh#13686414。 - Hans Passant
@twalberg: 我相信也可以写成 COMPUTE Result = Num1 * Num2 - Keith Thompson
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接