Fájlok írása Pytonban!
Elkészült a Python nyelv Szövegfájlok írása tananyagunk! Jó tanulást, jó gyakorlást!

<info9>

Gyakori hibák: Túlcsordulás

A programozásban túlcsordulásnak nevezzük azt a jelenséget, amikor egy adott helyre (pl.: egy változóba) több, vagy nagyobb értéket próbálunk írni, mint amekkora belefér. Ez a cikk az egyszerű adattípusok túlcsordulásával foglalkozik. A verem túlcsordulásról itt olvashatsz: Gyakori hibák: Veremtúlcsordulás

Webtárhely, 5% kedvezménnyel!

Most, hogy belevágtál a programozásba, jól jönne egy olcsó webtárhely? A SzerverPlex kedvező árú cPanel tárhelyeit most 5% kedvezménnyel igénybeveheted, és ezzel az info9 fennmaradását is támogatod.

Kattints a gombra, majd a csomag kiválasztása után aktiváld az INFO9 kuponkódot a fizetés előtt.

Szerzek webtárhelyet!

Bár a túlcsordulás jelenségével általában az int adattípusnál találkozunk a leggyakrabban, mégis kezdjük a dolog megértését először a byte adattípussal, mert ezt a méretéből adódóan valamivel egyszerűbben tudjuk szemléltetni. Hozzunk létre egy byte típusú változót, és írjuk bele például a 255-öt.

Mint az összefoglaló táblázatban láthatjuk (Lásd: Változók, adattípusok), a byte egy 8 biten tárolódó előjel nélküli egész szám. A 255 kettes számrendszerbe konvertálva 11111111, ami mindössze 8 számjegy, tehát tökéletesen a 8 bitnyi helyen. A számunkat tehát letároltuk, nincs semmi probléma. Ha szeretnél kísérletezni a számrendszerek közötti átváltással, próbáld ki a kalkulátorunkat, és nézd meg, hogy melyik számok hány bitnyi helyet foglalnak!

Most próbáljuk meg letárolni a 256-ot. Az előzőhöz hasonlóan, ezt is átalakítjuk kettes számrendszerűvé, ami 100000000 lesz... És itt a probléma! Ez ugyanis már 9 bit helyet foglal...na, azonban nekünk csak 8 bit áll rendelkezésre, így tároláskor a legelső (bal oldali) bit értéke elveszik. Így tehát a programunk csak a 00000000 értéket fogja letárolni, ami viszont 0, és nem 256. A byte változónk tehát túlcsordult, azaz elértük a változónk felső határát, és ahogy átléptük azt, hirtelen egy kisebb számot kaptunk.

A jelenség az előjeles egész változók esetén (sbyte, short, int, long) annyiban más, hogy a túlcsordulás hatására ezen változótípusoknál nem a 0-hoz jutunk vissza, hanem az adott adattípusban tárolható legkisebb számhoz, ami ugyebár egy negatív szám.

Minél több bájton tárolódik a változónk, annál később érjük el a benne tárolható számok maximumát, azaz annál később kezd el az értékünk túlcsordulni - ezért is érdemes ügyelni a megfelelő változótípus használatára!