代码之家  ›  专栏  ›  技术社区  ›  Instantsoup

在CSH中,为什么4-3+1==0?

  •  12
  • Instantsoup  · 技术社区  · 17 年前
    #!/bin/csh
    
    @ cows = 4 - 3 + 1
    echo $cows
    

    运行时这个简单的CSH脚本在我预期为“2”时为输出生成“0”。

    ~root: csh simple.1
    0
    

    我做了一系列的检查,我能想到的唯一一件事就是“—”被读作一元否定而不是减法,因此改变了运算符的优先级,结果是4-4而不是2+1。这是正确的吗?如果是,有什么原因吗?如果没有…帮助!

    编辑:所以它们是右联想的!这些运算符在C中不是右相关的,是吗?C-Shell和C不同吗?

    3 回复  |  直到 13 年前
        1
  •  32
  •   alanc    13 年前

    当您希望运算符保持关联时,它们是 right associative in csh ,所以它被评估为 4-(3+1)

       -
      / \
     /   \
    4     +
         / \
        3   1
    
        2
  •  21
  •   Brandon E Taylor    17 年前

    在CSH中,+和-操作符是右相关的。这意味着“4-3+1”的计算结果为“4-(3+1)”。

        3
  •  3
  •   Paul Sonier    17 年前

    运算符分组。它的读数是4-(3+1),而不是(4-3+1)。