Ha C++ nyelvben egy kifejezésben egy bool és egy char típus szerepel, a kifejezés eredménye miért int típusú lesz, miért nem char?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
implicit tipuskonverzió, vélhetően.
A bool alapban int, azaz ha van, akkor byte.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
3as jól mondja
c++ban a bool is és a char is csak 1 byte méretű integer típusok, ezért ha a kettőt össze akarod adni, akkor ahogy a fordító elkezd keresni, hogy mivé tudja alakítani mindkettőt, hogy össze tudja őket adni, az int lesz a legyszűkebb keresztmetszet (kicsit bonyolultabb a valóságban, de ez a lényege)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Nem tudom a szakszerű választ, de C++-ban a karakterliterálok valójában int típusúak, a példában egy intet és egy boolt adsz össze. Így máris eggyel kevésbé meglepő.
Az szokott lenni a szabály, hogy a több értéket tárolni képes típusba konvertálódnak az értékek, nyilvánvaló okokból, ami az itteni kettő közül az int. Így tulajdonképpen semennyire nem meglepő.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
§4.7/4 from the C++ 11 or 14 Standard, §7.8/4 from the C++ 17 Standard, §7.3.9/2 from the 20 Standard says (Integral Conversion)
If the source type is bool, the value false is converted to zero and the value true is converted to one.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Mennyibe kerülne, hogy felfogd:
A valóságban nincs bool meg char sem. Csak állapotokat kifejező egyesek meg nullák vannak.
A számítógép csak számolni tud. Ezért számítógép és nem nyelvészeti lexikon.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
// mit ír ki?
std::cout << ('A' < 'B') << "\n";
std::cout << 'A' + 'B' << "\n";
std::cout << 'A' + false << "\n";
std::cout << 'A' + true << "\n";
if(0) std::cout << "yeeee!!";
else std::cout << "yoooo!";
Ezekre találd meg a magyarázatot és akkor megérted
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Szerintem a 9. példái rávilágítanak arra amit mondani szeretnék.
Az, hogy egy kifejezésben milyen típusú tagok vannak nem mond semmit arról, hogy a kifejezést kiértékelve kapott értéked milyen típusú.
A legjobb az lenne, hogyha a kifejezésekre úgy gondolnál, mint függvényekre:
A kifejezésben lévö tagok az argumentumok, a kifejezés kiértékelése utánni érték pedig a visszatérési érték:
Ilyen formán, ha átfordítod a kérdésed, egyböl látszik, hogy abszurd: "egy kifejezésben egy bool és egy char típus szerepel, a kifejezés eredménye miért int típusú lesz, miért nem char?" -> "ha egy függvény egy bool és egy char típust vár paraméterül, akkor miért int típussal tér vissza és miért nem char típussal?"
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!