Dans csh, pourquoi 4 - 3 + 1 == 0?
Question
#!/bin/csh
@ cows = 4 - 3 + 1
echo $cows
Ce script csh simple à l’exécution produit le " 0 " pour la sortie lorsque je m'attendais à "2".
~root: csh simple.1
0
J’ai fait beaucoup de recherches et la seule chose à laquelle je pouvais penser était que le "-" a été lu comme une négation unaire plutôt que soustraction, donc changer la priorité des opérateurs et aboutir à 4 - 4 plutôt que 2 + 1. Est-ce correct? Si oui, pourquoi? Si non ... aidez!
Edit: Donc ils ont raison associatif! Ces opérateurs ne sont PAS corrects associatifs en C, n'est-ce pas? C-Shell est-il différent de C?
La solution
Bien que vous vous attendiez à ce que les opérateurs restent associés, ils sont droit associatif en csh , donc évalué 4- (3 + 1)
-
/ \
/ \
4 +
/ \
3 1
Autres conseils
Les opérateurs + et - sont à droite associative dans csh. Cela signifie que "4 - 3 + 1" est évalué comme "4 - (3 + 1)".
Regroupement d’opérateurs. Il lit l'opération comme 4 - (3 + 1), par opposition à (4 - 3) + 1.