Raku kurss / Padziļināti / Vairāk par iebūvētajiem tipiem / Natīvie tipi 🆕

Izmēra tipi un pārpilde

Papildus parastajam int, Raku piedāvā veselos skaitļus ar fiksētu bitu platumu: int8, int16, int32, int64 un to neparakstītos partnerus uint8, uint16, uint32, uint64. Skaitlis norāda, cik bitus vērtība aizņem.

Fiksēts platums nozīmē fiksētu diapazonu. int8 satur vērtības no -128 līdz 127; uint8 satur no 0 līdz 255. Tā kā krātuve nevar pieaugt, pārkāpjot augšējo robežu, vērtība apgriežas uz apakšējo — tā ir pārplūšana:

my int8 $i = 127;
$i++;
say $i; # -128

Pievienojot vieninieku lielākajam int8, netiek iegūts 128 (kas neietilptu); vērtība apgriežas uz mazāko vērtību, -128. Neparakstītie tipi arī apgriežas:

my uint8 $u = 255;
$u++;
say $u; # 0

Tas ir pretēji parastajam Int, kurš vienkārši pieaug tik liels, cik nepieciešams, un nekad nepārplūst. Kompromiss ir viss natīvo tipu ar fiksētu izmēru jēga: jūs pieņemat fiksētu diapazonu apmaiņā pret paredzamu, kompaktu un ātru krātuvi.

Izmantojiet natīvo tipu ar fiksētu izmēru, kad zināt savu datu diapazonu un vēlaties efektivitāti — piemēram, bināro datu baiti uint8 masīvā. Parastai aritmētikai, kur skaitļi var pieaugt bez ierobežojumiem, palieciet pie Int.

Prakse

Jūs gaida 1 viktorīna par šī temata saturu.

Kursa navigācija

Viktorīna — Natīvie tipi   |   Viktorīna — Pārpilde


💪 Vai arī dodieties tieši uz šīs sadaļas vingrinājumiem.