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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top