Welche Variable

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Welche Variable

Beitrag von Andromeda »

Hallo,

ich fange gerade ein neues Programm an und bin jetzt verunsichert, wie ich meine Variablen benennen soll. Ich habe im Hinterkopf, dass Integer nicht mehr so ganz eindeutig ist. Stimmt das? Ist Integer64 besser?
Und wie ist die Standardbezeichnung für einen real-Wert?

Zum Rechnen innerhalb des Programms brauche ich ein paar Integer- und ein paar Real-Varible. Auf die Genauigkeit kommt es nicht so genau drauf an. Was nehme ich da am Besten?

Jole
Beiträge: 114
Registriert: Fr 4. Jul 2014, 14:39
OS, Lazarus, FPC: Linux
CPU-Target: amd64

Re: Welche Variable

Beitrag von Jole »


Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Re: Welche Variable

Beitrag von Andromeda »

Vielen Dank für diese Übersicht. Jetzt weiß ich auf jeden Fall, dass es noch weit mehr Datentypen gibt als ich dachte. Ich weiß aber trotzdem nicht, was ich nehmen soll. Manche Datentypen sind veraltet, andere wieder unpraktisch, weil vielleicht zu langsam oder nicht für alle Prozessoren geeignet. Ich wollte eigentlich wissen, was so die Standard-Datentypen sind für einen Integer- und einen Realwert. Wie schon gesagt, auf die Genauigkeit kommt es nicht an, aber es sollte dann auch nicht bei der nächsten Lazarusversion heißen, dass dieser Typ nicht mehr unterstützt wird oder nur noch aus Gründen der Abwärtskompatibilät verhanden ist.

Was nehmt Ihr so als Wald- und Wiesen-Integer?

SoE
Beiträge: 84
Registriert: Mo 31. Aug 2015, 01:51

Re: Welche Variable

Beitrag von SoE »

Was soll denn an SmallInt bzw. LongInt nicht eindeutig sein?
Und was stimmt mit Single oder Double nicht?

Woher soll man wissen mit welchen Zahlen du arbeiten willst?

Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Re: Welche Variable

Beitrag von Andromeda »

SoE hat geschrieben:Was soll denn an SmallInt bzw. LongInt nicht eindeutig sein?
Und was stimmt mit Single oder Double nicht?
Habe ich das behauptet?
Ich muss Zahlen von 1 bis 100 addieren, multiplizieren, subtrahieren und dividieren. Es spielt dabei nicht die geringste Rolle, ob das Ergebnis 8,1 oder 8,2 ist.
Dann frage ich jetzt anders: Mit welchen Datentypen kann Lazarus bei den heute üblichen Prozessoren und Betriebssystemen am schnellsten umgehen?

Mathias
Beiträge: 6914
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Welche Variable

Beitrag von Mathias »

Dann frage ich jetzt anders: Mit welchen Datentypen kann Lazarus bei den heute üblichen Prozessoren und Betriebssystemen am schnellsten umgehen?
Für Ganz-Zahlen, ganz normal einfach Integer.
Für Fliesskommazahlen, ist es Single.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Jole
Beiträge: 114
Registriert: Fr 4. Jul 2014, 14:39
OS, Lazarus, FPC: Linux
CPU-Target: amd64

Re: Welche Variable

Beitrag von Jole »

Andromeda hat geschrieben: Manche Datentypen sind veraltet, andere wieder unpraktisch, weil vielleicht zu langsam oder nicht für alle Prozessoren geeignet. Ich wollte eigentlich wissen, was so die Standard-Datentypen sind für einen Integer- und einen Realwert.
Welche Datentypen sind denn da veraltet? Meinst du damit „Real“? Der ist nicht veraltet, der ist jetzt nur = Double! Gut, der stammt noch aus den Turbo Pascal zeiten als Mathematische Funktionen noch Emuliert wurden weil kein Mathe-Coprozessor vorhanden war, Single (4Byte) und Double(8Byte), konnten nur mit diesem verwendet werden. Also, egal welchen Datentype du da verwendest, der wird auch übermorgen noch gültig sein. Für diese Grundrechenarten die du genant hast würde ich einfach den Double-Type nehmen.

SoE
Beiträge: 84
Registriert: Mo 31. Aug 2015, 01:51

Re: Welche Variable

Beitrag von SoE »

Habe ich das behauptet?
Das sollte kein Vorwurf sein... ich war nur etwas verdutzt, das ist alles...

Eigentlich läuft das so wie immer: Man reserviert den Speicher den man braucht und idealerweise nicht mehr. Falls man sich nicht sicher ist nimmt man eben etwas mehr bzw. den nächst größeren Wert.

SoE
Beiträge: 84
Registriert: Mo 31. Aug 2015, 01:51

Re: Welche Variable

Beitrag von SoE »

Code: Alles auswählen

 
Standard DatenTypen für Zahlen:
 
 
kleine Zahlen (0 bis mehrere Tausend)
=====================================
byte	   Ganzzahlen von      0 bis   255 = 1 byte im RAM pro Zahl
shortInt  Ganzzahlen von   -128 bis   127 = 1 byte im RAM pro Zahl	
word      Ganzzahlen von      0 bis 65535 = 2 byte im RAM pro Zahl
smallInt  Ganzzahlen von -32768 bis 32767 = 2 byte im RAM pro Zahl
 
 
 
größere Zahlen (Milliarden)
===========================
longInt   Ganzzahlen von -2 MRD bis 2 MRD = 4 byte im RAM pro Zahl
(meistens integer, int32.. siehe Projekteinstellungen: Compiler)
 
cardinal  Ganzzahlen von      0 bis 4 MRD = 4 byte im RAM pro Zahl
(longword, dword)
 
 
 
riesige Zahlen (Trillionen)
===========================
uInt64    Ganzzahlen von  0 TRIO bis 18 TRIO = 8 byte im RAM pro Zahl 
(qword)
 
int64     Ganzzahlen von -9 TRIO bis  9 TRIO = 8 byte im RAM pro Zahl
 
 
 
Gleitkommazahlen und Ganzzahlen mit und ohne Vorzeichen
=======================================================
single    Gleitkomma (Billiarden???) = 4 byte im RAM pro Zahl
(7 Stellen nach dem Komma)
 
double    Gleitkomma (Billiarden???) = 8 byte im RAM pro Zahl
(15 Stellen nach dem Komma, doppelt so präzise)
 
//Double wird auf modernen Rechnern schneller verarbeitet hab' ich gehört.
//Probieren geht über studieren...
 
Bitte korrigieren falls was nicht stimmt... :-)

Antworten