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

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

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

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