Simpel Typecasting

Tags:    c++

Hej,

Jeg prøver at demonstrere et simpelt typecastings eksempel men det virker ikke som jeg vil have det:

Fold kodeboks ind/udKode 


fordi når jeg ændrer datatypen i i linie 3 til f.eks. float eller noget andet, printer den stadig et integer ud.

Nogen som kan hjælpe mig??






Well... syntaxen er omvendt:
Fold kodeboks ind/udKode 


Edit1: Ja self! Du har jo erklæret i som en int. Det kan du ikke ændre på!



Indlæg senest redigeret d. 25.08.2008 17:51 af Bruger #11328
Man kan ikke ændre variablers type runtime i C++

Der er i praksis ingen forskel på
i = (int) myVariable
og
i = int(myVariable)

Man kan diskutere om den sidste er en rigtig typecast, men resultatet er det samme.



Man kan ikke ændre variablers type runtime i C++

Der er i praksis ingen forskel på
i = (int) myVariable
og
i = int(myVariable)

Man kan diskutere om den sidste er en rigtig typecast, men resultatet er det samme.


Det vil generere den samme maskin kode, men kønt er det ikke. Men det er der jo så meget i C standarden, som ikke er. Et par andre eksempler:
Fold kodeboks ind/udKode 


:'(



Tak for svar.... men tjaaaaa... hvad er så den rigtige måde??
Har jeg gjort det forkert? Plejer man at gøre det sådan, eller gør man det på en anden måde?



I C++ bruger man oftest "i = int(myVariable)"

Denne form "i = (int) myVariable" er mere et levn fra C, men bliver ofte brugt i C++

Henning, du har ikke gjort noget "forkert", men man kan ikke ændre en variabels type.
I din kode har du:
i = int (myVariable);

i er en int, dvs. et heltal, det bliver den ved med at være hele livet, det vil den også være efter du har udført linjen.
Det der sker er at man tager heltalsdelen af myVariable, og evt. "beskærer" tallet hvis det er for stort. Dette puttes over i "i"

Du spørger: "Plejer man at gøre det sådan, eller gør man det på en anden måde?"

Jo man plejer at gøre sådan hvis det er det man vil, hvis man vil noget andet må man gøre noget andet.



Ok tak! Nu er jeg med.... :)



t