Em csh, por que 4-3 + 1 == 0?
Pergunta
#!/bin/csh
@ cows = 4 - 3 + 1
echo $cows
Este script csh simples quando executado produz "0" para a saída quando eu esperaria "2".
~root: csh simple.1
0
Eu fiz um monte de olhar e a única coisa que eu conseguia pensar era que o "-" estava sendo lido como uma negação unário em vez de subtração, portanto, mudar a precedência do operador e terminando com 4-4 em vez de 2 + 1 . isso é correto? Se assim for, qualquer razão para que? Se não ... ajuda!
Edit: Então eles são associativos à direita! Estes operadores não estão bem associativas em C, são eles? C-Shell é diferente de C?
Solução
Enquanto você está esperando os operadores a ser associativa esquerda, eles são direito associativo em csh , por isso é avaliado como 4-(3+1)
-
/ \
/ \
4 +
/ \
3 1
Outras dicas
O + e - operadores estão bem-associativa em csh. Isto significa que '4-3 + 1' é avaliada como '4 - (3 + 1)'.
Operador de agrupamento. É lendo a operação como 4 - (3 + 1), em oposição a (4-3). + 1