Epäsuora Tyyppimuunnos
Pyyhkäise näyttääksesi valikon
Tyyppimuunnos tapahtuu jatkuvasti. Se voi olla joko implisiittinen muunnos, jonka kääntäjä suorittaa automaattisesti, tai eksplisiittinen muunnos, jossa tyypit muunnetaan koodissa nimenomaisesti.
main.cpp
1234567#include <iostream> int main() { int num = 6.5; // Implicit type conversion std::cout << num << std::endl; }
Esimerkissä 6.5, liukuluku, muunnetaan implisiittisesti int-tyyppiin (desimaaliosa poistetaan).
Implisiittinen tyyppimuunnos tapahtuu, kun muuttujan tyyppi ei vastaa sitä tyyppiä, jota kääntäjä odottaa (esimerkiksi kun arvo sijoitetaan int-muuttujaan, kääntäjä odottaa kokonaislukua ja suorittaa tyyppimuunnoksen, jos saa jotain muuta).
- Punaiset nuolet tarkoittavat tietojen menetystä. Esimerkiksi, jos muunnetaan
floattyyppinen arvolong(taiint) tyyppiin, desimaaliosa menetetään; - Vihreät nuolet tarkoittavat, ettei tietoja menetetä. Esimerkiksi, voimme turvallisesti muuntaa
inttyyppisen arvonlongtyyppiin, ja tulos on sama; - Keltainen nuoli muunnettaessa
long(taiint) tyyppiäfloat(tailong) tyyppiin tarkoittaa, että joskus tietoja menetetään, koskafloat(tailong) ei ole riittävän tarkka.
main.cpp
1234567891011#include <iostream> #include <iomanip> int main() { int num_int = 123456789; float num_float = num_int; std::cout << std::setprecision(10); std::cout << num_float << std::endl; }
Toinen esimerkki implisiittisestä tyyppimuunnoksesta ovat +, -, *, / -operaatiot. Ne tulisi suorittaa muuttujille, joilla on sama tietotyyppi. Jos näin ei ole, C++ suorittaa tyyppipromootion automaattisesti. Esimerkiksi int / double -> double / double.
Toinen esimerkki, jossa voi kohdata implisiittisen tyyppimuunnoksen, ovat ehdot. Esimerkiksi if-lause.
Se odottaa, että ehto on bool tyyppiä. Implisiittisen tyyppimuunnoksen ansiosta voimme kuitenkin käyttää muitakin tietotyyppejä ehtona. Tässä on kuva, joka näyttää, miten ne muunnetaan bool-tyyppiin:
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Epäsuora Tyyppimuunnos
Tyyppimuunnos tapahtuu jatkuvasti. Se voi olla joko implisiittinen muunnos, jonka kääntäjä suorittaa automaattisesti, tai eksplisiittinen muunnos, jossa tyypit muunnetaan koodissa nimenomaisesti.
main.cpp
1234567#include <iostream> int main() { int num = 6.5; // Implicit type conversion std::cout << num << std::endl; }
Esimerkissä 6.5, liukuluku, muunnetaan implisiittisesti int-tyyppiin (desimaaliosa poistetaan).
Implisiittinen tyyppimuunnos tapahtuu, kun muuttujan tyyppi ei vastaa sitä tyyppiä, jota kääntäjä odottaa (esimerkiksi kun arvo sijoitetaan int-muuttujaan, kääntäjä odottaa kokonaislukua ja suorittaa tyyppimuunnoksen, jos saa jotain muuta).
- Punaiset nuolet tarkoittavat tietojen menetystä. Esimerkiksi, jos muunnetaan
floattyyppinen arvolong(taiint) tyyppiin, desimaaliosa menetetään; - Vihreät nuolet tarkoittavat, ettei tietoja menetetä. Esimerkiksi, voimme turvallisesti muuntaa
inttyyppisen arvonlongtyyppiin, ja tulos on sama; - Keltainen nuoli muunnettaessa
long(taiint) tyyppiäfloat(tailong) tyyppiin tarkoittaa, että joskus tietoja menetetään, koskafloat(tailong) ei ole riittävän tarkka.
main.cpp
1234567891011#include <iostream> #include <iomanip> int main() { int num_int = 123456789; float num_float = num_int; std::cout << std::setprecision(10); std::cout << num_float << std::endl; }
Toinen esimerkki implisiittisestä tyyppimuunnoksesta ovat +, -, *, / -operaatiot. Ne tulisi suorittaa muuttujille, joilla on sama tietotyyppi. Jos näin ei ole, C++ suorittaa tyyppipromootion automaattisesti. Esimerkiksi int / double -> double / double.
Toinen esimerkki, jossa voi kohdata implisiittisen tyyppimuunnoksen, ovat ehdot. Esimerkiksi if-lause.
Se odottaa, että ehto on bool tyyppiä. Implisiittisen tyyppimuunnoksen ansiosta voimme kuitenkin käyttää muitakin tietotyyppejä ehtona. Tässä on kuva, joka näyttää, miten ne muunnetaan bool-tyyppiin:
Kiitos palautteestasi!