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 |