Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

30.04.2010, 12:28

Wozu int?

int wird ja je nach System angepasst also enthält entweder 2 Byte oder 4 Byte. short besitzt immer 2 Byte und long immer 4 Byte. Wozu braucht man da noch int? Wenn man auf einem PC mit einem 4 Byte int arbeitet und Zahlen > 32767 verwendet, gibt es auf einem anderen PC, bei dem int nur 2 Byte groß ist, doch nur Probleme.
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

Alyx

Treue Seele

Beiträge: 236

Wohnort: Hannover

Beruf: Head Of Software Development

  • Private Nachricht senden

2

30.04.2010, 12:44

Aus welchem Buch ist das bzw. welches Jahr?

Du wirst kein System ausserhalb eines Museums finden, bei dem ein int nicht 4 Byte groß ist. Ich benutze ausschließlich int bzw. int64 und niemals long und es läuft einwandfrei auf: Windows 32, Windows 64, Windows CE/Mobile sämtlicher Generationen, Android, iPhone, Mac OS X, Symbian und sowohl Ubuntu 32 als auch 64.

Falls sich in diesem Leben an der Tatsache noch etwas ändern sollte, lasse ich halt einmal ein globales Ersetzen über den Quelltext laufen und fertig ist die Maus, aber ich denke, das wird nicht mehr geschehen.
Der einzige etwas widerwillige Typ ist wchar_t, der unter Unix-Systemen 4-Byte groß ist und unter Windows nicht. Da für mich Windows natürlich 95%ige Priorität hat, verwalte ich Texte entsprechend natürlich im 2-Byte-Format, um sinnvoll debuggen zu können, und wrappe es unter Unix auf unsigned short, was das Debuggen von String-Angelegenheiten auf diesen Systemen natürlich dann nicht besonders schön macht.

In diesem Sinne LG,
Alyx

3

30.04.2010, 13:12

C++ lernen und professionell anwenden, seh grad, dass es nicht mal mehr in der MSDN so aufgeführt ist.

Dass es kaum noch Systeme gibt, die das unterstützen, ist mir klar, allerdings stellt sich mir einfach aus Neugier die Frage wozu es ursprünglich sinnvoll war.
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

4

30.04.2010, 13:29

Sinnvoll war es bestimmt nicht, aber standardkonform. Iirc sagt der Standard lediglich folgendes aus:
char <= short <= int <= long

Ein 4byte char würde also auch dem Standard entsprechen ;)

Hat halt ein wenig gedauert, bis sich mal alle auf mehr oder weniger das gleiche geeinigt hatten.

jokester

Treue Seele

Beiträge: 125

Wohnort: Mainz

  • Private Nachricht senden

5

30.04.2010, 14:36

Ein 4byte char würde also auch dem Standard entsprechen
Nein, würde er nicht.
§5.3.3 Sizeof:
"[...] sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1. [...]"
"There is a theory which states that if ever anyone discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre and inexplicable. There is another theory which states that this has already happened" -- Douglas Adams.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

6

30.04.2010, 14:43

Ok, aber die anderen Datentypen sind nur durch das was ich geschrieben hab beschränkt, oder?

jokester

Treue Seele

Beiträge: 125

Wohnort: Mainz

  • Private Nachricht senden

7

30.04.2010, 14:53

18.2.2: Abschnitt über climits: "[...]The contents are the same as the Standard C library header <limits.h>."
Wenn man da im C-Standard nachliest, findet man, dass SCHAR_MIN <= -127 ist, SCHAR_MAX >= 127, UCHAR_MAX >= 255, CHAR_MIN entweder SCHAR_MIN oder 0, CHAR_MAX entweder SCHAR_MAX oder UCHAR_MAX, SHRT_MIN <= –32,767, SHRT_MAX >= 32767, USHRT_MAX >= 65535, bei int sinds auch mindestens die short-grenzen, LONG_MIN ist <= -2,147,483,647, LONG_MAX >= 2,147,483,647, ULONG_MAX >= 4294967295.
"There is a theory which states that if ever anyone discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre and inexplicable. There is another theory which states that this has already happened" -- Douglas Adams.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

01.05.2010, 15:05

Aus Struppis Buch:
1 := sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
1 <= sizeof(bool <= sizeof(long)
sizeof(char) <= sizeof(wchar_t) <= sizeof(long)
sizeof(float) <= sizeof(double) <= sizeof(long double)
sizeof(N) := sizeof(signed N) := sizeof(unsigned N)

Jeder dieser "fundamentalen" Typen kann also in der Größe variieren, es gibt allerdings Regelungen das z.B. ein short niemals größer als ein int sein darf usw... (s.O.)

Ansonsten wird relativ von char ausgehend definiert. Char ist immer genau ein Byte groß. Es ist allerdings nicht festgelegt wieviel Bit ein Byte hat (in den allermeisten Fällen sind das allerdings 8 Bit).
@D13_Dreinig

Mastermind

unregistriert

9

01.05.2010, 23:05

Sinnvoll war es bestimmt nicht, aber standardkonform. Iirc sagt der Standard lediglich folgendes aus:
char <= short <= int <= long

Ein 4byte char würde also auch dem Standard entsprechen ;)

Hat halt ein wenig gedauert, bis sich mal alle auf mehr oder weniger das gleiche geeinigt hatten.


Eigentlich ist der Grund glaube ich gewesen, dass int der nativen Breite eines Prozessorregisters entspricht.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

10

02.05.2010, 02:05

Ein 4byte char würde also auch dem Standard entsprechen
Nein, würde er nicht.
§5.3.3 Sizeof:
"[...] sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1. [...]"

4 Byte für char geht.
sizeof liefert nämlich nicht die Größe in Bytes, sondern bezieht sich auf die Größe von char.
sizeof(char) ist daher per Definition = 1. Aber das heißt nicht, dass char automatisch 1 Byte groß ist.

Werbeanzeige