Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Epäsuora Tyyppimuunnos | Muut Tietotyypit ja Käsitteet
C++ Tietotyypit

bookEpä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

main.cpp

copy
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 float tyyppiin long (tai int), desimaaliosa menetetään;
  • Vihreät nuolet tarkoittavat, ettei tietoja menetetä. Esimerkiksi, int voidaan turvallisesti muuntaa long-tyyppiin, ja tulos pysyy samana;
  • Keltainen nuoli muunnettaessa long (tai int) tyyppiin float (tai long) tarkoittaa, että joskus tietoja menetetään float (tai long) -tyypin riittämättömän tarkkuuden vuoksi.
main.cpp

main.cpp

copy
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:

question mark

Mikä seuraavista sijoituksista voi aiheuttaa tietojen menetystä C++:n automaattisen tyyppimuunnoksen vuoksi?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 4. Luku 6
some-alt