Ответ 1
Пока вы ожидаете, что операторы останутся ассоциативными, они правая ассоциативность в csh, поэтому он оценивается как 4-(3+1)
-
/ \
/ \
4 +
/ \
3 1
#!/bin/csh
@ cows = 4 - 3 + 1
echo $cows
Этот простой csh script при запуске создает "0" для вывода, когда я ожидаю "2".
~root: csh simple.1
0
Я сделал кучу взглядов, и единственное, что я мог подумать, было то, что "-" читалось как унарное отрицание, а не вычитание, поэтому меняя приоритет оператора и заканчивая 4-4, а не 2 + 1. Это верно? Если да, то почему? Если нет... помогите!
Изменить: значит, они правы ассоциативные! Эти операторы НЕ являются ассоциативными в C, не так ли? Является ли C-Shell отличным от C?
Пока вы ожидаете, что операторы останутся ассоциативными, они правая ассоциативность в csh, поэтому он оценивается как 4-(3+1)
-
/ \
/ \
4 +
/ \
3 1
Операторы + и - являются право-ассоциативными в csh. Это означает, что "4 - 3 + 1" оценивается как "4 - (3 + 1)".
Группировка операторов. Он считывает операцию как 4 - (3 + 1), в отличие от (4 - 3) + 1.