Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

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

Code Block


h2. Syntaksi

{code}
(haluttu_tyyppi)muuttuja;
{code}

Tyypinmuunnos

...

voidaan

...

tehdä

...

myös

...

välitulokselle:

{
Code Block
}
(haluttu_tyyppi)(muuttuja1*muuttuja2);
{code}

Tässä

...

laskennan

...

muuttuja1*muuttuja2

...

tulokselle

...

suoritetaan

...

tyypinmuunnos.

Esimerkki

Ajatellaan seuraavaa tilannetta:

Code Block


h2. Esimerkki

Ajatellaan seuraavaa tilannetta:
{code}
int x;
printf("Anna kokonaisluku: ");
scanf("%d", &x);
printf("%d/2 = %d\n", x, x/2);
{code}

Koodissa

...

halutaan

...

tulostaa

...

muuttuja

...

x

...

jaettuna

...

kahdella.

...


Tämä

...

toimii,

...

niin

...

kauan

...

kun

...

x

...

on

...

kahdella

...

jaollinen

...

.

...


Arvolla

...

x

...

=

...

4

...

ohjelma

...

tulostaa:

{
No Format
}4/2 = 2
{noformat}

Mitä

...

sitten

...

jos

...

x

...

ei

...

ole

...

jaollinen

...

kahdella?

...


Oletetaan

...

että

...

x

...

=

...

3

...

,

...

tällöin

...

ohjelma

...

tulostaa

...

laskutoimituksen

...

kokonaislukuna:

{
No Format
}3/2 = 1
{noformat}

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

...

liukuluvuksi

...

(float

...

tai

...

double),

...

mutta

...

tämä

...

ei

...

aina

...

ole

...

mahdollista

...

tai

...

haluttua.

...

Tällöin

...

voimme

...

käyttää

...

tyypinmuunnosta

...

apuna.

{
Code Block
}
int x;
printf("Anna kokonaisluku: ");
scanf("%d", &x);
printf("%d/2 = %f\n", x, (float)x/2); // Huom. 1. tulostus on %d. 2. taas %f
{code}
{note}{{
Note

(float)x

}}

riittää,

sillä

jos

yksikin

laskennan

arvoista

on

{{

float

}}\

-tyyppinen,

on

tuloskin

tyyppiä

{{

float.

Arvolla x = 3 ohjelma tulostaa:

No Format
}}.{note}
Arvolla {{x = 3}} ohjelma tulostaa:
{noformat}
3/2 = 1.500000
{noformat}