Kezdőoldal » Számítástechnika » Programozás » Ha C++ nyelvben egy kifejezésb...

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?

Figyelt kérdés

#C++ #implicit típuskonverzió
2021. jún. 15. 12:28
1 2
 1/16 anonim ***** válasza:
Milyen kifejezésben?
2021. jún. 15. 14:16
Hasznos számodra ez a válasz?
 2/16 A kérdező kommentje:
Pl. true + '1'
2021. jún. 15. 16:14
 3/16 anonim ***** válasza:
0%

implicit tipuskonverzió, vélhetően.


A bool alapban int, azaz ha van, akkor byte.

2021. jún. 15. 16:16
Hasznos számodra ez a válasz?
 4/16 anonim ***** válasza:
0%

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)

2021. jún. 15. 16:47
Hasznos számodra ez a válasz?
 5/16 anonim ***** válasza:

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ő.

2021. jún. 16. 00:42
Hasznos számodra ez a válasz?
 6/16 anonim ***** válasza:

[link]


§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.

2021. jún. 16. 08:11
Hasznos számodra ez a válasz?
 7/16 A kérdező kommentje:
Van olyan kifejezés, amiben nem szerepel int, és boollal vagy charral végzünk valami műveletet, de az eredmény marad bool vagy char?
2021. jún. 16. 10:11
 8/16 anonim ***** válasza:
0%

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.

2021. jún. 16. 10:39
Hasznos számodra ez a válasz?
 9/16 anonim ***** válasza:
78%

// 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

2021. jún. 16. 14:49
Hasznos számodra ez a válasz?
 10/16 anonim ***** válasza:
31%

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?"

2021. jún. 16. 16:10
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!