Toon posts:

type int OS afhankelijk?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb in mijn C boek staan dat het maximum int getal 32758 is. Echter gaat dit type in de Borland Compiler veel hoger namelijk tot 2147473647, heeft dit te maken met dat Windows XP een 32 bit OS is en de Borland compiler int standaard op 32 bit heeft staan?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16:30

Janoz

Moderator Devschuur®

!litemod

Yep.. afhankelijk van OS, architectuur, mischien zelfs wel van compiler...

Daarom hebben ze vaak ook constantes als MAX_INT, en functies als sizeOf. Je moet NOOIT ergens in je programma zo'n waarde hard coderen..

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op donderdag 20 december 2001 16:13 schreef Janoz het volgende:
Yep.. afhankelijk van OS, architectuur, mischien zelfs wel van compiler...

Daarom hebben ze vaak ook constantes als MAX_INT, en functies als sizeOf. Je moet NOOIT ergens in je programma zo'n waarde hard coderen..
Het hangt inderdaad van een aantal factoren af. De compiler speelt hier geloof ik een grote rol. Daarnaast zijn er ook nog types als long en short en signed en unsigned. Let daar ook op.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

sterker nog, het enige dat vast staat is

sizeof (char) <= sizeof (short) <= sizeof (int) <= sizeof (long)

en sizeof (char) = 1

:)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

natuurlijk hebben veel pakketten daar een oplossing voor.
Delphi heeft voor een integer altijd 32 bits...
Veel talen of tools definieren ook een int32 en int16 of zelfs een int8

Localhost, sweet localhost


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 23:11
Op donderdag 20 december 2001 17:38 schreef OiSyN het volgende:
sterker nog, het enige dat vast staat is

sizeof (char) <= sizeof (short) <= sizeof (int) <= sizeof (long)

en sizeof (char) = 1
Bijna compleet - sizeof(int) moet 2 zijn vanwege EOF, wat een int is ongelijk aan alle chars - dus er zijn meer ints dan chars.
Dus ook nog sizeof (char) < sizeof (int)
:)

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 23:11
Op donderdag 20 december 2001 16:11 schreef reetkever41 het volgende:
Ik heb in mijn C boek staan dat het maximum int getal 32758 is. Echter gaat dit type in de Borland Compiler veel hoger namelijk tot 2147473647, heeft dit te maken met dat Windows XP een 32 bit OS is en de Borland compiler int standaard op 32 bit heeft staan?
Het laatste - ook in DOS mag int 32 bits zijn. Het boek zal wel 32767 hebben bedoeld, 2^15-1, omdat een int tenminste 16 bits moet hebben waarvan een sign-bit.
Dus als programmeur mag je er niet op rekenen dat 40000 in een int past. Daarvoor heb je long, die is altijd en overal tenminste 32 bits.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • DolleDries
  • Registratie: Oktober 2000
  • Laatst online: 15-09 21:24
Sterker nog, doorgaans zijn alle compilers onder DOS (die dos ook dos progs compileren en geen 32bit code) en onder WIndows 3.x allemaal aan het uitgaan van een integer die 16 bits groot is. Zodra je te maken krijgt met compilers die protected mode code kunnen compileren (dus native 32 bit applicaties) zijn de compilers aan het uitgaan van 32 bit integers (ben namelijk zelf ooit in het grijze verleden) tegen deze gein aangelopen. :)

  • DaRealRenzel
  • Registratie: November 2000
  • Laatst online: 15-09 08:43

DaRealRenzel

Overtuigd Dipsomaan

Ligt er maar aan hoe een INT gedefinieerd is. Wat jij beschrijft (32768) is een Signed 16-bit integer (15 bits voor het getal, 1 bit voor sign). Een Unsigned 16-bit integer kan 65536 groot zijn (2^16). Afhankelijk van de standaard wordlengte van je machine / compiler kan dat oplopen tot 4294967296 (unsigned 32-bit int, 2^32) of 18446744073709551616 (unsigned 64-bit int, 2^64). Over het algemeen is een INT echter 16-bits (1 Word, 2 Bytes). Wordt het langer, dan heet het een Long Int (2 word, 4 bytes, 32 bits) en nog langer een quad (4 words, 8 bytes, 64 bits)

Nothing is a problem once you've debugged the code

Pagina: 1