2009-06-18 16 views
1

Suite de my previous question, pourquoi CShell est-il si différent de C?Pourquoi les opérateurs sont-ils correctement associatifs dans CShell qui restent associatifs dans C?

  • 4 - 3 + 1 = 2 à C
  • 4 - 3 + 1 = 0 dans cShell.

Des idées?

+0

Apparemment, csh exige des espaces entre les opérateurs arithmétiques et, selon la programmation Csh Considered Harmful (http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/) – bk1e

+0

Juste pour ajouter à la frivolity, dans tcsh (pour lequel '/ bin/csh' est souvent un lien symbolique),' 4 - 3 + 1' est évalué à '2'. –

Répondre

1

Généralement, la notation traditionnelle est de gauche à droite (associative de gauche) dans les papiers humains. Donc, pour l'homme (qui a utilisé cette notation bien avant c, csh ou même toute notion d'ordinateurs):

4 - 3 + 1 = (4 - 3) + 1 = 1 + 1 = 2 

Pourquoi? Je suppose que la meilleure réponse est parce que. C'est la même chose qu'avec la conduite à gauche ou à droite de la route. Peu importe de quel côté tant que tout le monde utilise la même chose.

IMHO le csh est faux car il est contre-intuitif. Peut-être était-ce une erreur (ils voulaient gauche associative mais codée à tort) et devient héritage comme d'autres choses déjà dépenées sur ce point.

0

Différentes personnes ont écrit les produits, et ils avaient des vues différentes sur la façon de gérer les calculs. Et puisque le C Shell a été écrit en second lieu, je pense qu'ils sont en faute pour ne pas suivre l'exemple de la langue parente nominale.