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

时间:2009-06-17 23:43:18

标签: operators csh

#!/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 个答案:

答案 0 :(得分:32)

虽然您希望运算符保持关联状态,但它们是right associative in csh,因此它被评估为4-(3+1)

   -
  / \
 /   \
4     +
     / \
    3   1

答案 1 :(得分:21)

+和 - 运算符在csh中是右关联的。这意味着'4 - 3 + 1'被评估为'4 - (3 + 1)'。

答案 2 :(得分:3)

操作员分组。它将操作读为4 - (3 + 1),而不是(4 - 3)+ 1。