13
#!/bin/csh

@ cows = 4 - 3 + 1
echo $cows

この単純な csh スクリプトを実行すると、出力が "2" と予想されるときに "0" が生成されます。

~root: csh simple.1
0

私はたくさん調べましたが、考えられる唯一のことは、「-」が減算ではなく単項否定として読み取られていたため、演算子の優先順位が変更され、2 + 1 ではなく 4 - 4 になったということでした。正しい?もしそうなら、何か理由はありますか?そうでなければ...助けて!

編集:したがって、それらは正しく連想的です! これらの演算子は、C では右結合ではありませんね。C-Shell は C とそんなに違うのですか?

4

3 に答える 3

33

演算子が左結合であることを期待していますが、 cshでは右結合であるため、次のように評価されます。4-(3+1)

   -
  / \
 /   \
4     +
     / \
    3   1
于 2009-06-17T23:51:34.567 に答える
21

+ および - 演算子は、csh では右結合です。これは、「4 - 3 + 1」が「4 - (3 + 1)」として評価されることを意味します。

于 2009-06-17T23:46:30.737 に答える
3

オペレーターのグループ化。(4 - 3) + 1 ではなく、4 - (3 + 1) として操作を読み取ります。

于 2009-06-17T23:45:31.880 に答える