Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

TyyppimuunnoksettMyn1 Tyyppimuunnokset Joskus kääntäjän on tehtävä itse päätöksiä, jos ohjelmoija ei ole ajatellut yksityiskohtia: int arvo1=10; long arvo2=25;

Samankaltaiset esitykset


Esitys aiheesta: "TyyppimuunnoksettMyn1 Tyyppimuunnokset Joskus kääntäjän on tehtävä itse päätöksiä, jos ohjelmoija ei ole ajatellut yksityiskohtia: int arvo1=10; long arvo2=25;"— Esityksen transkriptio:

1 TyyppimuunnoksettMyn1 Tyyppimuunnokset Joskus kääntäjän on tehtävä itse päätöksiä, jos ohjelmoija ei ole ajatellut yksityiskohtia: int arvo1=10; long arvo2=25; float arvo3=30.0; double summa=arvo1+arvo2+arvo3;

2 TyyppimuunnoksettMyn2 Mitä tapahtuu: arvo1+arvo2 summataan siten, että arvo1 muunnetaan ensin tyypin long arvoksi. Summaksi saadaan 35. Tämä summa, 35, muunnetaan seuraavaksi tyypin float arvoksi, ja sitten se summataan muuttujan arvo3 arvolla. Summaksi tulee nyt 65.0. Tämä muunnetaan tyypin double arvoksi, ja tallennetaan muuttujan summa arvoksi. Kääntäjän tekemät tyyppimuunnokset noudattavat seuraavaa kaavaa: 1. Jos toinen operandeista on tyyppiä long double, niin sitten toinenkin muunnetaan saman tyyppiseksi. 2. Jos toinen operandeista on tyyppiä double, niin sitten toinenkin muunnetaan saman tyyppiseksi.

3 TyyppimuunnoksettMyn3 3. Jos toinen operandi on tyyppiä float, niin sitten toinenkin muunnetaan saman tyyppiseksi. 4. Jos operandi on tyyppiä char, signed char, unsigned char, short tai unsigned short, niin sitten ne muunnetaan tyypiksi int, jos tämä on riittävä kaikille. Muussa tapauksessa muunnetaan tyypiksi unsigned int. 5. Lueteltu tyyppi muunnetaan joko tyypiksi (pienin mahdollinen, joka täyttää alkuperäisten muuttujien arvoalueet) int, unsigned int, long tai sitten unsigned long. 6. Jos toinen operandeista on tyyppiä unsigned int, niin sitten toinenkin muunnetaan saman tyyppiseksi.

4 TyyppimuunnoksettMyn4 7. Olkoot toinen operandi tyyppiä long ja toinen operandi tyyppiä unsigned int. Jos tyypin long muuttuja voi edustaa kaikkia tyypin unsigned int arvoja, niin silloin siirrytään tyyppiin long. Muussa tapauksessa muunnetaan operandit tyyppiin unsigned int. 8. Jos toinen operandi on tyyppiä long, niin sitten toinenkin muunnetaan saman tyyppiseksi.

5 TyyppimuunnoksettMyn5 Ohjelmoija voi tehdä eksplisiittisen tyyppimuunnoksen (explicit cast): static_cast (expression) double arvo1=10.5; double arvo2=15.5; int kokonaisluvut=static_cast (arvo1) + static_cast (arvo2); muuttujan kokonaisluvut arvoksi tulee siis 25.

6 TyyppimuunnoksettMyn6 Montako tavua muuttuja varaa muistista? Yksioperandinen sizeof()-operaattori palauttaa operandin tilanvarauksen koon tavuina ilmoitettuna. Operandina voi olla muuttuja, vakio tai tietotyypin nimi. cout << endl << ”Jos muuttuja on int-tyyppinen, niin se vie tilaa” << sizeof(int) << ”tavua.”


Lataa ppt "TyyppimuunnoksettMyn1 Tyyppimuunnokset Joskus kääntäjän on tehtävä itse päätöksiä, jos ohjelmoija ei ole ajatellut yksityiskohtia: int arvo1=10; long arvo2=25;"

Samankaltaiset esitykset


Iklan oleh Google