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?
implicit tipuskonverzió, vélhetően.
A bool alapban int, azaz ha van, akkor byte.
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)
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ő.
§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.
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.
// 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
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!