Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Eksplisiittinen tyypinmuunnos (cast)

  • Eksplisiittisessä tyypinmuunnoksessa muuttujan tyyppi muutetaan väliaikaisesti (eli lausekkeen suorituksen ajaksi) muunnoksessa ilmoitetuksi tyypiksi.
  • Muunnos tehdään kirjoittamalla muuttujan nimen eteen sulkeisiin lausekkeessa käytettävä tyyppi.

Syntaksi

Tyyppimuunnokset

...

Code Block
(haluttu _tyyppi)muuttuja;

...

Esimerkki

Ajatellaan seuraavaa tilannetta:

Code Block
int x;
printf("Anna kokonaisluku: ");
scanf("%d", %x);
printf("x%d/2 = %d", x, x/2);

Koodissa halutaan tulostaa muuttuja x jaettuna kahdella.
Tämä toimii, niin kauan kun x on kahdella jaollinen.

Mitä sitten jos x ei ole jaollinen kahdella?
Oletetaan että x = 3? Ohjelma , tällöin ohjelma tulostaa laskutoimituksen kokonaislukuna:

No Format
x3/2 = 1

Tämä ei käy päinsä, vaan haluamme luonnollisesti saada kaiken informaation oikein käyttäjälle. Yksi vaihtoehto on muuttaa muuttujan x tyyppi kokonaisluvuksi, mutta tämä ei aina ole mahdollista tai haluttua. Silloin voidaan Tllöin voimme käyttää tyyppimuunnosta apuna.

Code Block
int x;
printf("Anna kokonaisluku: ");
scanf("%d", %x);
printf("x%d/2 = %f", x, (float)x/2); // Huom. 1. tulostus on %d. 2. taas %f

Arvolla x = 3 ohjelma tulostaa:

No Format
x3/2 = 1.500000