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
floattyyppiinlong(taiint), desimaaliosa menetetään; - Vihreät nuolet tarkoittavat, ettei tietoja menetetä. Esimerkiksi,
intvoidaan turvallisesti muuntaalong-tyyppiin, ja tulos pysyy samana; - Keltainen nuoli muunnettaessa
long(taiint) tyyppiinfloat(tailong) tarkoittaa, että joskus tietoja menetetäänfloat(tailong) -tyypin riittämättömän tarkkuuden vuoksi.
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 tilanne, jossa implisiittinen tyyppimuunnos esiintyy, 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