arithmetic operator (tsz. arithmetic operators)
A C++ beépített aritmetikai operátorai:
Operátor | Leírás | Példa |
---|---|---|
+
|
Összeadás | a + b
|
-
|
Kivonás | a - b
|
*
|
Szorzás | a * b
|
/
|
Osztás | a / b
|
%
|
Maradékos osztás (modulus) | a % b
|
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 3;
cout << "Osszeadas: " << (a + b) << endl;
cout << "Kivonas: " << (a - b) << endl;
cout << "Szorzas: " << (a * b) << endl;
cout << "Osztas: " << (a / b) << endl;
cout << "Maradekos osztas: " << (a % b) << endl;
return 0;
}
Kimenet:
Osszeadas: 13 Kivonas: 7 Szorzas: 30 Osztas: 3 Maradekos osztas: 1
💡 Megjegyzés: Egész számok (int
) osztásánál a C++ egész osztást hajt végre (a törtrész elvész). Ha tizedes tört eredményt szeretnénk, használjunk double
típust.
double x = 10.0, y = 3.0;
cout << "Osztas (double): " << (x / y) << endl; // Kiírja: 3.33333
Ezek az operátorok egyszerre hajtanak végre műveletet és hozzárendelést.
Operátor | Példa | Ugyanaz, mint… |
---|---|---|
+=
|
a += b
|
a = a + b
|
-=
|
a -= b
|
a = a - b
|
*=
|
a *= b
|
a = a * b
|
/=
|
a /= b
|
a = a / b
|
%=
|
a %= b
|
a = a % b
|
#include <iostream>
using namespace std;
int main() {
int a = 10;
a += 5; // a = 10 + 5
cout << "a += 5: " << a << endl;
a *= 2; // a = 15 * 2
cout << "a *= 2: " << a << endl;
a /= 3; // a = 30 / 3
cout << "a /= 3: " << a << endl;
return 0;
}
Kimenet:
a += 5: 15 a *= 2: 30 a /= 3: 10
C++-ban saját osztályokat is használhatunk az alapvető aritmetikai operátorokkal, ha operátor túlterhelést (operator+
, operator-
, stb.) alkalmazunk.
+
) túlterhelése egy Vektor osztályra#include <iostream>
using namespace std;
class Vektor {
public:
int x, y;
Vektor(int a, int b) : x(a), y(b) {}
// `+` operátor túlterhelése
Vektor operator+(const Vektor& masik) {
return Vektor(x + masik.x, y + masik.y);
}
void kiir() {
cout << "(" << x << ", " << y << ")" << endl;
}
};
int main() {
Vektor v1(2, 3);
Vektor v2(4, 5);
Vektor eredmeny = v1 + v2; // `+` operátor túlterhelése
eredmeny.kiir(); // Kiírja: (6, 8)
return 0;
}
/
) és 0
-val való osztás kezeléseAz osztásnál fontos ellenőrizni a 0-val való osztás elkerülését, különösen egész számok esetén.
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 0;
if (b != 0) {
cout << "Osztas: " << (a / b) << endl;
} else {
cout << "Hiba: 0-val nem lehet osztani!" << endl;
}
return 0;
}
Kimenet:
Hiba: 0-val nem lehet osztani!
💡 Megjegyzés: double
típus esetén 0.0
-val való osztás nem okoz programhibát, hanem inf
értéket ad vissza.
double x = 10.0, y = 0.0;
cout << (x / y) << endl; // Kiírja: inf
++
és --
A ++
és --
operátorok egy változó értékét növelik vagy csökkentik.
Operátor | Leírás | Példa |
---|---|---|
++
|
Növelés 1-gyel | a++ vagy ++a
|
--
|
Csökkentés 1-gyel | a-- vagy --a
|
int a = 5;
cout << a++ << endl; // Kiírja: 5 (először kiír, aztán növel)
cout << ++a << endl; // Kiírja: 7 (először növel, aztán kiír)
Ha egy osztályban túl akarjuk terhelni a ++
operátort:
class Szam {
public:
int ertek;
Szam(int e) : ertek(e) {}
// `++` operátor túlterhelése
Szam operator++() {
++ertek;
return *this;
}
void kiir() {
cout << "Ertek: " << ertek << endl;
}
};
int main() {
Szam sz(10);
++sz;
sz.kiir(); // Kiírja: Ertek: 11
}
✔ Ha saját osztályokat szeretnénk intuitív módon kezelni matematikai műveletekkel.
✔ Ha vektorok, mátrixok vagy egyéb adatszerkezetek összeadását, kivonását stb. szeretnénk implementálni.
✔ Ha a kódot olvashatóbbá és egyszerűbbé szeretnénk tenni.
+
, -
, *
, /
, %
++
és --
operátorok növelést/csökkentést hajtanak végre.0
-val való osztásra figyelni kell!