Størrelsen på int via sizeof ?

Tags:    c++

Når man bruger climits headerfil og bruger sizeof, får man så størrelsen på en "int" i
følgende kode:
Fold kodeboks ind/udKode 

fra headerfilen under compiling, eller er det størrelsen fra styresystemet f.eks. Windows XP ?




Tror det er kompileringsværktøjet der bestemmer. F.eks. Microsofts Visual C++ har faste værdier for størrelsen.




Hej Ib,

32 eller 64 bit windows xp ? :)
Det er platform-afhængigt.

Med venlig hilsen
Ieet




Hej Ib,

32 eller 64 bit windows xp ? :)
Det er platform-afhængigt.

Med venlig hilsen
Ieet


Det er 32-bit windows XP ;-)

Super Ieet, så virker mit program efter hensigten på følgende link:
http://home20.inet.tele.dk/assembler/CPP/Symbolic_Constants/Symbolic_Constants.exe

(jeg fik bare den idé, at hvis det var compileren der afgjorde hvilken værdi en
int eller long m.m. fik, så ville programmet jo være nytteløst.)

Var det muligt at du kunne checke programmet på en 64-bit windows version ?


Hilsen Ib



Indlæg senest redigeret d. 27.05.2009 13:01 af Bruger #9738
Når du bruger sizeof() så er det compileren, som bestemmer resultatet. Det afhænger ikke af CPU'en.

Hvis du compiler til 32 bit systemer vil sizeof(int) give 4, hvis du compiler til 64 bit systemer, vil sizeof(int) give 8.

Men selv hvis du compiler PÅ en 64 bit maskine men TIL en 32 bit arkitektur så vil resultatet give 4.




Hej Ib,

Som Robert påpeger...
Det er platform afhængigt - af arkitekturen som der bliver compilet til (hvilket ofte er arkiteksturen som der bliver compilet på).

Med venlig hilsen
Ieet




Hej Ib,

Som Robert påpeger...
Det er platform afhængigt - af arkitekturen som der bliver compilet til (hvilket ofte er arkiteksturen som der bliver compilet på).

Med venlig hilsen
Ieet


ok, dvs. at det program jeg har lavet, vil altid give samme resultat uanset om det kører på 32-bit eller 64-bit platform, medmindre at jeg compiler det igen til en 64-bit platform right ?




Hej Ib,

Som Robert påpeger...
Det er platform afhængigt - af arkitekturen som der bliver compilet til (hvilket ofte er arkiteksturen som der bliver compilet på).

Med venlig hilsen
Ieet


ok, dvs. at det program jeg har lavet, vil altid give samme resultat uanset om det kører på 32-bit eller 64-bit platform, medmindre at jeg compiler det igen til en 64-bit platform right ?


Præcis



Du kan faktisk bare nøjes med at kompilere det til 32bit (x86) siden disse programmer fint kan køre på 64bit (x64) uden problemer, (måske en meget lille performance bump?). Men du kan ikke køre 64bit på 32bit platform.







Indlæg senest redigeret d. 29.05.2009 00:17 af Bruger #9738
Du kan faktisk bare nøjes med at kompilere det til 32bit (x86) siden disse programmer fint kan køre på 64bit (x64) uden problemer, (måske en meget lille performance bump?). Men du kan ikke køre 64bit på 32bit platform.



Hej Søren

Det er rigtigt, men ikke i mit tilfælde, da er det nødvendigt at kompilere til den platform programmet skal bruges, da det ellers viser de "forkerte værdier".
Jeg kan jo bare skrive i programmet, at det er kompileret til enten 32-bit eller 64-bit platform ;-)


PS. jeg har slettet teksten i min forrige post, da jeg havde skrevet det samme 2 gange. Man får vist ikke lov til at slette et dobbelt indlæg ?

Hilsen Ib




Indlæg senest redigeret d. 29.05.2009 00:20 af Bruger #9738
t