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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top