2009-06-17 90 views
12
#!/bin/csh 

@ cows = 4 - 3 + 1 
echo $cows 

这个简单的csh脚本在运行时会产生“0”,当我期望“2”时输出。在csh中,为什么4 - 3 + 1 == 0?

~root: csh simple.1 
0 

我做了一堆的目光,我能想到的唯一的事情是,“ - ”被读为一元的否定,而不是减法,所以改变运算符优先级与4结束了 - 4,而比2 + 1.这是正确的吗?如果是这样,为什么?如果没有...帮助!

编辑:所以他们是正确的联想!这些运算符在C中不是正确的关联,是吗? C-Shell与C不同吗?

+4

这里有一个更好的问题......为什么CSH使用权,关联分析树并没有离开评估? – 2009-06-17 23:56:36

+11

...和更好的问题。为什么使用csh? – 2009-06-18 00:03:18

回答

3

运算符分组。它读取操作为4 - (3 + 1),而不是(4 - 3)+1。

21

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