Aldagaiak eta konstanteak aurreko kapituluan aztertu ondoren, aipatutako aldagai eta konstanteak espresioak osatzeko nola konbina daitezkeen ikustea izango da kapitulu honen helburua.
C lengoaian eragiketa bat adierazteko eragile bat erabiltzen da. Aldagaiak edota konstanteak eragileekin konbinatuz espresioak sortzen dira, eta espresio batek edo batzuek, eragileen bidez konbinaturik, agindu bat osatzen dute. Aurreko kapituluetako programetan erabili ditugun = (asignazioa) + (batuketa) – (kenketa) eta * (biderkaketa) eragileak baino askoz ere gehiago daude. Banan-banan aztertu baino lehen, eragileen bi ezaugarri nagusi aztertuko ditugu: lehentasuna eta elkargarritasuna, hain zuzen.
Espresio batean eragile bat baino gehiago dagoenean ebaluaketa-ordena eragileen lehentasunaren arabera gertatzen da. Lehentasun handieneko eragiketak burutzen dira lehen lan-emaitzak lortuz. Geroago, eta lehentasunaren ordena beheranzkorrari jarraituz, ondorengo eragileak aplikatzen dira aurreko lan-emaitzen gainean. Parentesiek, beste lengoaietan bezala, ebaluaketaren ordena aldatzen dute. Adibidez, 2 + 3 * 4 espresioaren ebaluaketak 14 sortzen du, biderkaketak batuketak baino lehentasun-maila handiagoa duelako.
Elkargarritasunak ebaluaketa nola burutzen den esaten digu, ezkerretik eskuinera ala alderantziz. Adibidez, = eragileak eskuin-ezker elkargarritasuna duen bitartean, eragile aritmetiko arruntek (+, –, *) ezker-eskuinekoa dute.
a = b = c
eskuinetik ebaluatzen da. Beraz, b -k lehenik eta a -k gero c -ren balioa hartzen dute.
a + b - c
aldiz, ezkerretik eskuinera ebaluatuko da. 1. taulan eragile garrantzitsuenak eta dagokien elkargarritasuna agertzen dira, lehentasunaren ordenean.
Taulan agertzen diren eragileak azter ditzagun.
2. taulan ikusten denez, ohizko eragiketez aparte beste bi agertzen dira; inkrementoa eta dekrementoa hain zuzen. Bietan asignazioa gertatzen da eta beste era batez adieraz badaitezke ere, erosotasun eta eraginkortasunari begira sartu dira C lengoaiaren barruan, batzuetan programak irakurtzeko zailak gertatu arren.
Aipatzekoa da zatiketarako / eragile bakarra egotea, bai zatiketa osorako bai errealerako (PASCALez aldiz, div eta / eragileak bereiztu egiten dira). Eragigaiak osoak badira, emaitza zatiketa osoarena izango da eta bestelakoetan erreala (ikus 3. taula).
Modulua, % eragilea, eragigai osoekin baino ezin da erabili.
Adibidea:
Zenbaki bikoitiaren baldintza (x % 2) = = Ø
C lengoaiaren ezaugarrien artean bitak atzitzeko gaitasuna aipatu dugu eta horretarako 4. taulan azaldutako eragileak dauzkagu. Jakina denez AND eragiketa zenbait bit Ø egoeran jartzeko erabiltzen da, OR eragiketa 1 egoeran jartzeko eta XOR-a (bitak) egoeraz aldatzeko. Horretarako karaktere (8 bit), short (16 bit) edo long (32 bit) motako aldagai bat hamaseitarrez ( Øx aurrizkia) adierazitako maskara batekin parekatzen da. Maskaran mantendu nahi diren bitei Ø balioa egokitzen zaie eta batean jarri (OR) edo aldatu (XOR) nahi direnei bat balioa. AND eragiketan alderantziz egin behar da eta horretarako eragilea erabil daiteke.
Adibidez, n aldagaia 8 bitez osatuta egonda, (haien balioa jakin gabe) eta ezkerreko bita batean jarri, eskuinekoa zeroan jarri eta erdiko biak aldatu nahi baditugu ondokoa egin behar da:
n = n | Øx8Ø n = n ( ØxØ1) n = n^ Øx18 | /* n ¨ | xxxx xxxx */ 1xxx xxxØ */ |
Desplazamenduek bit-maneiua egitura errepikakorretan erabiltzeko balio dute batez ere, 5. kapituluan ikusiko dugunez.
Erlazio-eragileak baldintzak adierazteko erabiltzen dira batipat (ikus 5. taula). Dena den, C lengoaiaz edozein espresio baldintza izan daiteke; asignazioa, espresio aritmetikoa, ...
Erlaziozko ez den espresio bat baldintza denean, espresioaren ebaluaketa Ø denean faltsutzat jotzen da eta gainerako kasuetan egiazkotzat. Hori dela eta, kontu handia eduki behar da berdintasuneko erlazioarekin; oso erraza bait da = = eragilea jarri beharrean = (asignazioa) jartzea, beste lengoaietan egiten denaren legez. Ondorioz, egiaztatuko den baldintzaren emaitza esleitutako balioaren araberakoa izango da.
int n = Ø
if (n=Ø) /* beti faltsua, asignazioa bait da */
if (n = = Ø) /* kasu honetan egiazkoa n Ø bait da */
Karaktere-kateak ikusitako eragileekin ezin direla konbinatu ere aipatzekoa da, karaktere-kateak oinarrizko datuak ez direlako (ikus 7. kapitulua).
Eragile hauek datu-egiturekin eta erakusleekin zerikusi handia dute eta 7. kapituluan sakonago aztertuko dira (ikus 6. taula).
Eragiketa bat eta asignazioa konbinatzen dute eragile hauek, emaitza eta 1. eragigaia beti aldagai berbera direlarik. Horrela, x=x+a jarri beharrean x+= a jar daiteke, x=x 3 jarri ordez x =3 etab.
Eragile hauek ondokoak dira:
+= %= = | –= = = | *= | /= |