Защо операторите са десни асоциативни в CShell, които са ляво асоциативни в C?

В продължение на предишния ми въпрос, защо CShell е толкова различен от C?

  • 4 - 3 + 1 = 2 in C.
  • 4 - 3 + 1 = 0 в CShell.

Някакви идеи?


person Community    schedule 18.06.2009    source източник
comment
Очевидно csh изисква празно пространство и между аритметичните оператори, според Csh програмирането се счита за вредно (faqs.org/faqs/unix-faq/shell/csh-whynot)   -  person bk1e    schedule 20.06.2009
comment
Само за да добавим към лекомислието, в tcsh (към който /bin/csh често е символна връзка), 4 - 3 + 1 се оценява на 2.   -  person Keith Thompson    schedule 21.03.2013


Отговори (2)


Обикновено традиционната нотация е отляво надясно (ляво асоциативно) в човешките документи. Така че за хората (които са използвали тази нотация много преди c, csh или дори каквото и да е понятие за компютри):

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

Защо? Предполагам, че най-добрият отговор е защото. Това е същото като при шофиране от лявата или от дясната страна на пътя. Наистина няма значение от коя страна, стига всички да използват едно и също.

IMHO csh е грешен, тъй като е контраинтуитивен. Възможно е това да е грешка (те са искали ляво асоциативно, но кодирано погрешно) и да стане наследство, тъй като други неща вече зависят от това.

person Community    schedule 19.06.2009

Различни хора написаха продуктите и имаха различни виждания за това как да се справят с изчисленията. И тъй като C Shell беше написан втори, мисля, че те са виновни, че не следват примера на номиналния родителски език.

person Community    schedule 18.06.2009