Operatörsassociativitet

För det matematiska begreppet associativitet, se Associativ egenskap.

I programmeringsspråk är en operators associativitet en egenskap som bestämmer hur operatörer med samma prejudikat grupperas i avsaknad av parenteser. Om en operand både föregås och följs av operatorer (t.ex. ^ 3 ^), och dessa operatorer har samma prejudikat, kan operanden användas som indata till två olika operationer (dvs. de två operationer som anges av de två operatörerna). Valet av vilka operationer som operanden ska tillämpas på bestäms av operatörernas associativitet. Operatorer kan vara associativa (vilket innebär att operationerna kan grupperas godtyckligt), vänsterassociativa (vilket innebär att operationerna grupperas från vänster), högerassociativa (vilket innebär att operationerna grupperas från höger) eller icke-associativa (vilket innebär att operationerna inte kan kedjas, ofta på grund av att utmatningstypen är oförenlig med inmatningstyperna). Associativitet och företräde för en operatör är en del av definitionen av programmeringsspråket; olika programmeringsspråk kan ha olika associativitet och företräde för samma typ av operatör.

Tänk på uttrycket a ~ b ~ c. Om operatören ~ har vänsterassociativitet skulle detta uttryck tolkas som (a ~ b) ~ c. Om operatören har högerassociativitet skulle uttrycket tolkas som a ~ (b ~ c). Om operatören är icke-associativ kan uttrycket vara ett syntaxfel, eller så kan det ha någon speciell betydelse. Vissa matematiska operatorer har inneboende associativitet. Till exempel är subtraktion och division, som används i konventionell matematisk notation, av naturliga skäl vänsterassociativa. Addition och multiplikation är däremot både vänster- och högerassociativa. (t.ex. (a * b) * c = a * (b * c)).

Många manualer för programmeringsspråk innehåller en tabell över operatörernas företräde och associativitet; se t.ex. tabellen för C och C++.

Begreppet notationsassociativitet som beskrivs här är besläktat med, men skiljer sig från den matematiska associativiteten. En operation som är matematiskt associativ kräver per definition ingen notativ associativitet. (Till exempel har addition den associativa egenskapen, därför behöver den inte vara antingen vänsterassociativ eller högerassociativ). En operation som inte är matematiskt associativ måste däremot vara notativt vänster-, höger- eller icke-associativ. (Till exempel har subtraktion inte den associativa egenskapen, därför måste den ha notationell associativitet.)

Lämna ett svar

Din e-postadress kommer inte publiceras.