【问题标题】:Why are operators right associative in CShell that are left associative in C?为什么运算符在 CShell 中是右结合的,而在 C 中是左结合的?
【发布时间】:2010-11-03 20:26:55
【问题描述】:

my previous question跟进,为什么CShell与C如此不同?

  • 4 - 3 + 1 = 2 in C.
  • 4 - 3 + 1 = 0 在 CShell 中。

有什么想法吗?

【问题讨论】:

  • 显然,根据 Csh Programming Considered Harmful (faqs.org/faqs/unix-faq/shell/csh-whynot) 的说法,csh 在算术运算符之间也需要空格
  • 只是为了增加轻浮性,在 tcsh(/bin/csh 通常是符号链接)中,4 - 3 + 1 的计算结果为 2

标签: c operators csh


【解决方案1】:

一般来说,人类论文中的传统符号是从左到右(左结合)。所以对于人类(早在 c、csh 甚至任何计算机概念之前就使用过这个符号):

4 - 3 + 1 = (4 - 3) + 1 = 1 + 1 = 2

为什么?我想最好的答案是因为。这与在道路左侧或右侧行驶相同。只要每个人都使用相同的,哪一方都无所谓。

恕我直言,csh 是错误的,因为它违反直觉。可能这是一个错误(他们希望留下关联但编码错误)并成为遗留问题,因为其他事情已经依赖于此。

【讨论】:

    【解决方案2】:

    不同的人编写产品,他们对如何处理计算有不同的看法。而且由于 C Shell 是第二个编写的,我认为他们没有遵循名义上的父语言的领导是错误的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 2012-12-10
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多