Asocjatywność operatora

Do matematycznej koncepcji asocjatywności, zobacz Własność asocjacyjna.

W językach programowania, asocjatywność operatora jest właściwością, która określa, jak operatory o tym samym pierwszeństwie są zgrupowane w przypadku braku nawiasów. Jeśli operand jest zarówno poprzedzony, jak i następujący po operatorach (na przykład ^ 3 ^), a te operatory mają równe pierwszeństwo, to operand może być użyty jako wejście do dwóch różnych operacji (tj. dwóch operacji wskazanych przez dwa operatory). Wybór, do której z operacji zastosować operand, jest określony przez asocjatywność operatorów. Operatory mogą być asocjacyjne (czyli operacje mogą być dowolnie grupowane), lewostronnie asocjacyjne (czyli operacje są grupowane od lewej), prawostronnie asocjacyjne (czyli operacje są grupowane od prawej) lub niesocjacyjne (czyli operacje nie mogą być łączone w łańcuchy, często dlatego, że typ wyjściowy jest niezgodny z typami wejściowymi). Asocjatywność i pierwszeństwo operatora jest częścią definicji języka programowania; różne języki programowania mogą mieć różną asocjatywność i pierwszeństwo dla tego samego typu operatora.

Rozważmy wyrażenie a ~ b ~ c. Jeśli operator ~ ma lewą asocjatywność, to wyrażenie byłoby interpretowane jako (a ~ b) ~ c. Jeśli operator ma asocjatywność prawostronną, to wyrażenie byłoby interpretowane jako a ~ (b ~ c). Jeśli operator nie jest asocjacyjny, to wyrażenie może być błędem składni lub może mieć jakieś specjalne znaczenie. Niektóre operatory matematyczne mają nieodłączną asocjatywność. Na przykład, odejmowanie i dzielenie, używane w konwencjonalnej notacji matematycznej, są z natury lewostronnie asocjacyjne. Dodawanie i mnożenie, dla kontrastu, są zarówno lewo- jak i prawostronnie asocjacyjne. (np. (a * b) * c = a * (b * c)).

Wiele podręczników języków programowania zawiera tabelę pierwszeństwa operatorów i asocjatywności; zobacz, na przykład, tabelę dla C i C++.

Pojęcie asocjatywności notacyjnej opisane tutaj jest związane, ale różne od asocjatywności matematycznej. Operacja, która jest matematycznie asocjatywna, z definicji nie wymaga asocjatywności notacyjnej. (Na przykład, dodawanie ma własność asocjacyjną, dlatego nie musi być ani lewostronnie ani prawostronnie asocjacyjne). Operacja, która nie jest matematycznie asocjatywna, musi być notacyjnie lewostronna, prawostronna lub nieasocjatywna. (Na przykład, odejmowanie nie ma własności asocjacyjnej, więc musi mieć asocjatywność notacyjną.)

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.