Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Wieviel Bytes belegt long und die unterschiede der Plattformen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
matong
Gast





BeitragVerfasst am: 29. Okt 2003 19:25   Titel: Wieviel Bytes belegt long und die unterschiede der Plattformen

Servus Leute,
ich hab da mal ne Frage zu long.
Wir haben gelernt, das long immer 4 Bytes unter Windows belegt. Ich hatte das mal unter linux mit sizeof probiert, und da waren es mal 8 Bytes [dachte ich zumindest]. Doch heute waren es nur noch 4 Bytes.

Ich würde jetzt mal gerne Wissen, von was es abhängt, das long 8 oder 4 Bytes lang ist. Habe im inet nur soweit was herausgefunden, dass das mit ansi-c zusammen hängt.

Hängt das dann vom Compiler ab [einstellen von ansi-c oder ähnliches] oder vom Prozessor.

Danke im voraus,

Matong
 

feuerrote spielmobil
Gast





BeitragVerfasst am: 29. Okt 2003 21:44   Titel: Re: Wieviel Bytes belegt long und die unterschiede der Plattformen

> Doch heute waren es nur noch 4 Bytes.

war bei mir heut auch so. das hängt eben stark von der mondphase ab. ausserdem fährt der compiler bei starkem sonnenwind sicherheitshalber auf 4 bytes zurück.
(scnr, ist nicht bös gemeint).

> Ich würde jetzt mal gerne Wissen, von was es abhängt, das long 8 oder 4 Bytes lang ist.
> Hängt das dann vom Compiler ab [einstellen von ansi-c oder ähnliches] oder vom Prozessor.

es hängt vom compiler ab, nicht vom prozessor. üblich sind 4 bytes. soweit ich weiss (ich habs grad nochmal nachgeschlagen) schreibt ansi-c keine festen werte vor. es ist implementierungsabhängig.
 

matong
Gast





BeitragVerfasst am: 29. Okt 2003 22:09   Titel: Re: Wieviel Bytes belegt long und die unterschiede der Plattformen

Servus erstmal,
danke für den tip, das es an den sonnenwinden liegt.

aber nun mal ernst:
d.h. es ist unabhängig vom prozessor, dann könnte man ja dem compiler sagen, er solle long std. auf 8 byte setzen.

Das mit dem ansi-c std. stand auf dieser webseite:
<link>http://home.fhtw-berlin.de/~junghans/cref/CONCEPT/data_types.html</link>

Irgendwie hab ich so langsam das Gefühl, das keiner so recht weiß warum das mal 4 und dann wieder 8 byte sind.

Denn es gibt ja anscheinend auch noch long long [8 Byte], dass soll was zu tun haben mit C99.

Möchte mal wissen wer sich long ausgedacht hat, wenn die meißten compiler eh nur 4 byte benutzen.

cu matong
 

feuerrote spielmobil
Gast





BeitragVerfasst am: 29. Okt 2003 22:42   Titel: Re: Wieviel Bytes belegt long und die unterschiede der Plattformen

> d.h. es ist unabhängig vom prozessor, dann könnte man ja dem compiler sagen, er solle long std. auf 8 byte setzen.

wenn (!) der compiler so etwas vorsieht, würde das gehen. vorausgesetzt, es ist tatsächlich nicht in ansi-c festgeschrieben, dann wäre das immer noch ansi-konform. so etwas zu implementieren, ist kein prinzipielles problem.

> Irgendwie hab ich so langsam das Gefühl, das keiner so recht weiß warum das mal 4 und dann wieder 8 byte sind.

da müsstest du erstmal klären, wie du auf die 8 byte kommst.

> Denn es gibt ja anscheinend auch noch long long [8 Byte], dass soll was zu tun haben mit C99.

nun ja, "long long" ist aber nicht "long".

> Möchte mal wissen wer sich long ausgedacht hat, wenn die meißten compiler eh nur 4 byte benutzen.

merkwürdige logik. irgendeinen namen und irgendeine länge muss es nunmal haben. oder steht irgendwo geschrieben, dass ein typ, der sich long nennt, auch richtig fies lang sein muss?
short int: 2 bytes. long: 4 bytes. ich sehe dein problem nicht.

HTH & mfg - das feuerrote spielmobil.
 

matong
Gast





BeitragVerfasst am: 29. Okt 2003 22:51   Titel: Re: Wieviel Bytes belegt long und die unterschiede der Plattformen

Servus,

mein problem ist ganz einfach dieses, dass es Leute gibt, die sagen, das long manchmal auch 8 Byte lang ist.

short int sind ja 2 Byte
int sind 4 Byte
long int 4 Byte

Mein Prof meinte halt, dass es in der "Windows .net umgebung" 4 Byte seien, dies aber nicht der standart ist.

Matong
 

Jochen
Gast





BeitragVerfasst am: 30. Okt 2003 9:46   Titel: Re: Wieviel Bytes belegt long und die unterschiede der Plattformen

Nach meinem Stand der Dinge ist "short int" definiert als 16 Bit, "long int" definiert als 32 Bit. "int" ist definiert als "natürliche" Grösse des OS/der Architektur, weshalb "int" unter DOS 16 Bit breit ist und unter UNIX typischerweise 32 Bit.

Prinzipiell könnte ein "int" auf 64-Bit-Architektur/OS sogar 64 Bit gross sein, aber aus absehbaren Portabilitätsproblemen wollte man das Problem wohl mit den Datentyp "long long" (64 Bit) umgehen. Ob das mittlerweile in C99 definiert ist, weiss ich nicht. Zumindest solange man sich im Bereich "C" bewegt, hat Dein Prof unrecht. "C#" mag eine andere Sachen sein...

Jochen
 

hjb
Pro-Linux


Anmeldungsdatum: 15.08.1999
Beiträge: 3236
Wohnort: Bruchsal

BeitragVerfasst am: 30. Okt 2003 11:51   Titel: Re: Wieviel Bytes belegt long und die unterschiede der Plattformen

Hi!

Auf 32-bit-Rechnern ist long in aller Regel 32 bit (ich kenne kein Gegenbeispiel). Unter 16-bit-Systemen wie DOS könnte long aber auch 16 bit sein.

Auf 64-bit-Rechnern gibt es verschiedene Modelle, aber long dürfte in diesem Fall meist 64 bit sein, während int manchmal 32, manchmal 64 bit ist, und short 16 oder 32 bit sein kann.

Kurz gesagt: Die Länge von short, int und long ist nicht festgelegt und man darf bei portablen Programmen keine Annahmen machen, außer daß long >= int >= short >= char ist.

Gruß,
hjb
_________________
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger

Jochen
Gast





BeitragVerfasst am: 30. Okt 2003 13:39   Titel: Re: Wieviel Bytes belegt long und die unterschiede der Plattformen

Also, bei so viel teils widersprüchlichen Aussagen habe ich jetzt einfach mal in der Bibel (Kernighan&Ritchie, "The C Programming Language, 2nd Edition") nachgeschlagen.

Ganz klar ist:
  • char = "a single byte"
  • int = "an integer, typically reflecting the natural size of integers on the host machine"
    Ausserdem gilt:

    Each compiler is free to choose appropriate sizes for its own hardware, subject only to the restriction that that shorts and ints are at least 16 bit, longs are at least 32 bits, and short is no longer than int, which is no longer than long.
    Also hat hjb größtenteils recht. Lediglich die Vermutung, long könne unter DOS 16 Bits haben, ist nach dem o.a. Zitat nicht korrekt, da long mind. 32 Bits haben muss. In der Include-datei <limits.h> stehen übrigens die jeweils geltenden Maximal- und Minimal-Werte für den jeweiligen Datentyp.

    Mein früheres Posting ziehe ich hiermit offiziell zurück und erkläre es für null und nichtig.

    Jochen
  •  

    matong
    Gast





    BeitragVerfasst am: 03. Nov 2003 19:54   Titel: Re: Wieviel Bytes belegt long und die unterschiede der Plattformen

    Servus Leute,
    also kann man zusammenfassend sagen, das die länge von long int vom dem Prozessor & dem verwendeten OS abhängt, oder?


    Vielen Dank, matong
     

    Beiträge vom vorherigen Thema anzeigen:   
         Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
    Seite 1 von 1

     
    Gehen Sie zu:  

    Powered by phpBB © phpBB Group
    pro_linux Theme © 2004 by Mandaxy