Zum Inhalt springen

Variablen

In Skriptsprachen (python, javascript, R) muss man sich nicht um die genaue Größe von Variablen kümmern. Dies übernimmt der Interpreter.

main.ts
let age: number = 42; // Beispiel numerischer Typ in TypeScript

Das Verständnis, weshalb und wie viel Speicher für Variablen verwendet wird, ist entscheidend, um zu verstehen wie die Internas eines Computers funktionieren. Nur so ist es möglich effizientere und fehlerfreiere Software zu entwickeln.

Rust und C bieten deutlich mehr numerische Datentypen.

let age: u8 = 42;

u8

Ein numerischer Rust-Typ setzt sich aus zwei Teilen zusammen:

1. Typ-Präfix (welche Art von Zahl):

  • u = unsigned (vorzeichenlos) → nur positive Zahlen (0 und größer)
  • i = integer (vorzeichenbehaftet) → positive und negative ganze Zahlen
  • f = floating point (Gleitkommazahl) → Dezimalzahlen

2. Bit-Größe (wie viel Speicher):

  • 8 = 8 Bits = 1 Byte
  • 16 = 16 Bits = 2 Bytes
  • 32 = 32 Bits = 4 Bytes
  • 64 = 64 Bits = 8 Bytes
  • 128 = 128 Bits = 16 Bytes (nur für Integer, nicht für f)

Die Bit-Größe bestimmt, welche Zahlen gespeichert werden können:

TypBytesWertebereich
u810 bis 255
u1620 bis 65.535
u3240 bis ~4,3 Milliarden
i81-128 bis 127
i162-32.768 bis 32.767
i324~-2,1 Milliarden bis ~2,1 Milliarden
f324Dezimalzahlen mit ~7 Nachkommastellen Genauigkeit
f648Dezimalzahlen mit ~15 Nachkommastellen Genauigkeit
// Alter einer Person: 0-255 reicht völlig aus
let age: u8 = 42;
// Negative Temperaturen möglich
let temperature: i16 = -15;
// Große Zahlen (z.B. Einwohnerzahl)
let population: u32 = 8_000_000;
// Preise mit Nachkommastellen
let price: f64 = 19.99;
// Sehr große Zahlen (z.B. wissenschaftliche Berechnungen)
let national_debt: u128 = 34_000_000_000_000;
Play

Welcher Datentyp eignet sich, um das Alter einer Person zu speichern?

Wie viele Bytes belegt eine Variable vom Typ u64?

Welcher Wert kann NICHT in einer u8 Variable gespeichert werden?

Was bedeutet das “u” in u32?

Welcher Typ sollte für Geldbeträge mit Nachkommastellen verwendet werden?

Welcher Wertebereich gilt für i8?

Warum bietet Rust mehr numerische Typen als TypeScript?