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övelibértékét (b = b + 1), majd az új értéket adja át aza-nak (a = b). - Postfix forma (utána áll):
a = b++;Ennek jelentése, hogy először átadja a régi értéket aza-nak (a = b), és csak utána növeli megbé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ő:
-
Zárójelek
()(a legmagasabb prioritás). -
Szorzás
*, Osztás/, Maradékos osztás%. -
Ö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;, akkori++értéke = ... -
Ha
int j = -1;, akkorj--é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)= ...