GeirGrusom Skrevet 10. september 2005 Del Skrevet 10. september 2005 ikke noe god kode. men hvorfor blir int i 432? Fordi 32/8=4. int er den eneste datatypen som varierer i størrelse etter prosessoren, på en 16-bit prosessor er sizeof(int) = 2, 32 bit er sizeof(int) = 4 og på en 64-bit er sizeof(int) = 8 sizeof(char) = 1 sizeof(short) = 2 sizeof(long) = 4 sizeof(long long) = 8 sizeof(float) = 4 sizeof(double) = 8 de har ikke tatt med 80 bit floating point i C++, så hvis du vil ha det så nøyaktig må du bruke assembly, men den tar da 10 byte. Lenke til kommentar
prebenl Skrevet 10. september 2005 Del Skrevet 10. september 2005 Oh my GOD.... generell studie kompetanse..... dette går i samme kategori som et kvelds kurs i spansk på friundervisningen også krever de noe i det hele tatt Det er akkreditert, og gir deg studiepoeng som et fag på en hvilken som helst høyskole. Lenke til kommentar
Peter Skrevet 10. september 2005 Del Skrevet 10. september 2005 GeirGrusom: Jeg ser ikke sammenhengen i svaret ditt med spørsmålet til HotStian. En annen ting, en int på min maskin (som er en AMD Athlon 64 med XP64 på), så er en int fortsatt 4 bytes. Lenke til kommentar
genstian Skrevet 10. september 2005 Del Skrevet 10. september 2005 En annen ting, en int på min maskin (som er en AMD Athlon 64 med XP64 på), så er en int fortsatt 4 bytes. Windows har mange slike tilfeller. Linux/UNIX/BSD/Solaris/BeOS/MacOS/FreeDOS/Darwin/Hurd/Amiga Research Operating System/ReactOS(OpenWindows) vil gi deg 8 på 64-bit. Lenke til kommentar
kjetil7 Skrevet 10. september 2005 Del Skrevet 10. september 2005 (endret) ikke noe god kode. men hvorfor blir int i 432? Fordi 32/8=4. int er den eneste datatypen som varierer i størrelse etter prosessoren, på en 16-bit prosessor er sizeof(int) = 2, 32 bit er sizeof(int) = 4 og på en 64-bit er sizeof(int) = 8 sizeof(char) = 1 sizeof(short) = 2 sizeof(long) = 4 sizeof(long long) = 8 sizeof(float) = 4 sizeof(double) = 8 de har ikke tatt med 80 bit floating point i C++, så hvis du vil ha det så nøyaktig må du bruke assembly, men den tar da 10 byte. Er ikke riktig. Det eneste standarden garanterer er følgende: sizeof(char) == 1 sizeof(signed char) == 1 sizeof(unsigned char) ==1 Resten er implementasjonsavhengig. Jeg siterer ISO/IEC 14882:1998(E) eller C++ standarden som vi kaller den, fra avsnitt 5.3.3: sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1; the result of sizeof applied to any other fundamental type (3.9.1) is implementation-defined. HotStian: Windows har mange slike tilfeller. Linux/UNIX/BSD/Solaris/BeOS/MacOS/FreeDOS/Darwin/Hurd/Amiga Research Operating System/ReactOS(OpenWindows) vil gi deg 8 på 64-bit Er nok ikke helt riktig HotStian. På Athlon64-systemet jeg testet på var sizeof(int) == 4. sizeof(long int) ble derimot 8 (tror det var en FC3 distro jeg testet på). Også på Solaris er sizeof(int) == 4, mens sizeof(long) == 8. Endret 10. september 2005 av kjetil7 Lenke til kommentar
Peter Skrevet 10. september 2005 Del Skrevet 10. september 2005 (endret) Jeg har også hørt at det er kun char som til enhver tid og sted skal ha samme størrelse, 1 byte. Alle andre er (forhåpentlig vis) forklart her: http://msdn.microsoft.com/library/default....ental_Types.asp Endret 10. september 2005 av Nazgul Lenke til kommentar
genstian Skrevet 10. september 2005 Del Skrevet 10. september 2005 kan vel ikke si at alle distroene og alle solaris versjonene vil gi int == 8, men mange gjør det. kan ikke si at int SKAL være 8 på 64-bits. det har jo sine fordeler og ulemper. Lenke til kommentar
kjetil7 Skrevet 10. september 2005 Del Skrevet 10. september 2005 kan vel ikke si at alle distroene og alle solaris versjonene vil gi int == 8, men mange gjør det. kan ikke si at int SKAL være 8 på 64-bits. det har jo sine fordeler og ulemper. Det ville overraske meg veldig om Linuxdistroene gjør forskjell på int så sant det er snakk om samme maskinvare. Ja, nesten uavhengig maskinvare. Samme vil jeg også tro om Solaris. Fakta er at på de aller fleste 64-bitssystemer er int fortsatt 4 bytes. Har du eksempel på en Linuxdistro som har size(int) == 8 ? Lenke til kommentar
Peter Skrevet 10. september 2005 Del Skrevet 10. september 2005 Ganske forvirrende dette her egentlig. Jeg har lenge lurt på hvordan man lager programmer som drar nytte av 64-bits plattformen, og hvor stor forskjellen (altså i kode) det er fra 32-bits programmer. Lenke til kommentar
genstian Skrevet 10. september 2005 Del Skrevet 10. september 2005 kan vel ikke si at alle distroene og alle solaris versjonene vil gi int == 8, men mange gjør det. kan ikke si at int SKAL være 8 på 64-bits. det har jo sine fordeler og ulemper. Det ville overraske meg veldig om Linuxdistroene gjør forskjell på int så sant det er snakk om samme maskinvare. Ja, nesten uavhengig maskinvare. Samme vil jeg også tro om Solaris. Fakta er at på de aller fleste 64-bitssystemer er int fortsatt 4 bytes. Har du eksempel på en Linuxdistro som har size(int) == 8 ? på Gentoo systemet jeg hadde før(kompilert med 64-bit fra stage1) var int 8. Lenke til kommentar
printf Skrevet 28. september 2005 Del Skrevet 28. september 2005 (endret) En annen ting, en int på min maskin (som er en AMD Athlon 64 med XP64 på), så er en int fortsatt 4 bytes. Jeg trodde akkurat det var avhengig av hvilken kompilator man brukte? C++ skal jo følge en standard, men akkurat størrelsen på datatyper er etter hva jeg forstår ikke definert helt klart og dermed avhengig av hva kompilatorprodusenten selv har valgt å implementere. Jeg er ikke 100% sikker, men jeg tror det er forklaringen. Endret 28. september 2005 av printf Lenke til kommentar
GeirGrusom Skrevet 28. september 2005 Del Skrevet 28. september 2005 Ja, det er avhengig av kompilatoren, et 64-bit program for en 64 bit maskin, kompileres på en 64 bit kompilator, på en 64 bit maskin (for ellers kan du jo ikke starte programmet) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå