Kihagyás

2.4. Kifejezések és műveletek

A programozás során nagyon sokszor az adatokkal valamilyen műveletet kell végezni. Tekintsük át a legfontosabb operátorokat és jelentésüket!

Operátor Jelentése Magyarázat
- Aritmetikai negálás Negatív előjel.
! Logikai negálás NEM művelet.
* Szorzás Hagyományos szorzás.
/ Osztás Egész számok esetén az osztás egészrészét adja.
% Maradékos osztás Egy osztás maradékát adja.
+ Összeadás Hagyományos összeadás.
- Kivonás Hagyományos kivonás.
= Értékadás Értéket ad egy változónak.
++ Inkrementálás Változó értékének növelése 1-gyel.
-- Dekrementálás Változó értékének csökkentése 1-gyel.
() Zárójelek A beleírt műveleteket hajtja végre először.

Értékadás és rövidített operátorok

Az értékadás (=) bal oldalán olyan kifejezés áll, amely felveszi az új értéket, a jobb oldalán pedig az értéket adó kifejezés áll. Egyszerűbben fogalmazva: a bal oldal megkapja a jobb oldali kifejezés értékét.

Az értékadó operátor egy speciális esete, amikor a bal oldalon álló változó a jobb oldalon is megjelenik, például: i = i + 1;. Ilyenkor először kiértékelődik a jobb oldalon álló kifejezés, majd az érték átkerül a bal oldali változóba.

Rövidített értékadás

Gyakran az = operátorral együtt használjuk az aritmetikai operátorokat is (pl.: +=, *=, %=). Például az x += 3; alak pontos jelentése: x = x + 3;.

Inkrementáló és dekrementáló operátorok (++, --)

Ezek az operátorok eggyel növelik vagy csökkentik egy változó értékét. Két formájuk van attól függően, hogy az operátor hol áll:

  • Prefix forma (előtte áll): a = ++b; Ennek jelentése, hogy először megnöveli b értékét (b = b + 1), majd az új értéket adja át az a-nak (a = b).
  • Postfix forma (utána áll): a = b++; Ennek jelentése, hogy először átadja a régi értéket az a-nak (a = b), és csak utána növeli meg b értékét (b = b + 1).

2.4.1. A kifejezések kiértékelése

A kifejezések kiértékelése lépésről-lépésre történik, mindig "belülről kifelé". Az utolsó operátor kiértékelésének eredménye adja meg a kifejezés végső értékét és típusát.

Ha egy kifejezésben több operátor is van, akkor a prioritási (matematikai) sorrend a következő:

  1. Zárójelek () (a legmagasabb prioritás).

  2. Szorzás *, Osztás /, Maradékos osztás %.

  3. Összeadás +, Kivonás -.

Ha több azonos prioritási szintű operátor van egy kifejezésben, akkor az adott szint "kötési iránya" dönt, ami általában balról-jobbra halad.

Példák a kifejezések kiértékelésére:

int a = 6, b = 18, c = 23, x, y, z;

x = a + b; // Először megtörténik az összeadás, majd az eredmény (24) az x változóba kerül.
x = x + 1; // Megnézi x értékét (24), hozzáad egyet, x új értéke 25 lesz.
b -= a;    // Jelentése: b = b - a. Így b új értéke 12 lesz.

y = b / a; // y változó értéke 3 lesz.
z = c % a; // z változó értéke 5 lesz (a % jel az osztás maradékát adja!).
x = (c + b - a) % a; // Először a zárójelen belüli rész értékelődik ki, majd elvégződik a maradékos osztás. x értéke 5 lesz.

Gyakorló feladatok: A kifejezések kiértékelése

Számítsd ki (fejben), hogy mi lesz az alábbi kifejezések értéke!

1. Inkrementálás és logikai tagadás:

  • Ha int i = 1;, akkor i++ értéke = ...

  • Ha int j = -1;, akkor j-- értéke = ...

  • Ha bool A = true;, akkor !A értéke = ...

2. Kifejezések kiértékelése, ha a = 5, b = -2 és c = 3:

  • (a + b) * c = .. .

  • 3 * a - (c / b) = ...

  • (-a - c) / b = ...

3. Kifejezések kiértékelése, ha a = 10, b = -1 és c = 6:

  • (a % c) * c = ...

  • a * (c / b) = ...

4. Kifejezések kiértékelése, ha a = 8, b = -3 és c = 9:

  • (b % c) + (a / 2) * 7 = ...

  • (a % b) * c * 2 = ...

  • -b / a + (c * c) = ...

  • a * c - 4 * (a % b) = ...