Kezdőoldal » Számítástechnika » Programozás » Free Pascal: Int64 típus nem...

Free Pascal: Int64 típus nem sorszámozott, milyen hátrányokkal járhat ez, ha sorszámozott típusoknak megfelelő eljárásokat használok rá?

Figyelt kérdés

Az alábbi, sorszámozott típusokról szóló dokumentum:

[link]


Ezt írja:

With the exception of int64, qword and Real types, all base types are ordinal types. Ordinal types have the following characteristics:


1. Ordinal types are countable and ordered, i.e. it is, in principle, possible to start counting them one by one, in a specified order. This property allows

the operation of functions as Inc, Ord, Dec on ordinal types to be defined.

2. Ordinal values have a smallest possible value. Trying to apply the Pred function on the smallest possible value will generate a range check error if

range checking is enabled.

3. Ordinal values have a largest possible value. Trying to apply the Succ function on the largest possible value will generate a range check error if range

checking is enabled.


Kérdésem az lenne, hogy Int64 változót ha használok programban olyan nagy számokra, amit longint már nem képes tárolni, akkor esetleg a jövő Pascal változatokban ez a funkció majd működésképtelenné válhat?

Most még működik az inc és dec az int64 változó esetén....

Azt tudom, hogy a filesize() és filepos() is int64 visszatérési értékkel rendelkezik, valamint még biztos van jó pár ilyen, de ott nem használnak a sorszámozott típusra történő hivatkozást, mint pl. inc vagy dec.


Ami már most sem működik (de a fordító jelzi is a problémát):


program Sorszam_teszt;


var

i : int64;

begin

for i := 1 to 10 do

Write(i:5);

end.



2015. máj. 3. 06:01
 1/7 A kérdező kommentje:
Turbo Pascal azért szerepel a kulcsszavak közt, ha valaki csak azt figyeli, ő is megtalálja a kérdést.
2015. máj. 3. 06:05
 2/7 ejbenjaro ***** válasza:
Ha egyszer dokumentálva van, hogy nem sorszámozott típus, miért akarod akként használni?
2015. máj. 3. 09:27
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

Nem ismerek más típust ami longint fölött tárolna számokat.

A példaprogrammal azt kívántam bemutatni, hogy ebben az esetben szól a fordító, de az inc és dec esetén nem (amik szintén sorszámozott típusokhoz vannak), viszont működnek...

2015. máj. 3. 09:34
 4/7 A kérdező kommentje:

qword esetén ugyanez a helyzet.

Mégis mindkettő működik.


program inkrement;

var

q:qword;

i:int64;

begin

q:=9999999999;

i:=9999999999;

inc(i);

inc(q);

writeln(i);

writeln(q);

dec(q,7000000000);

dec(i,7000000000);

writeln(i);

writeln(q);

readln;

end.

2015. máj. 3. 10:05
 5/7 ejbenjaro ***** válasza:
Ha 64 bites architektúrán használod és 64 bites fordítóval fordítod, akkor működik még a for ciklus is. A korlátozás csak 32 bites architektúra esetén áll fent. Lásd itt, hogy miért: [link]
2015. máj. 3. 10:15
Hasznos számodra ez a válasz?
 6/7 SimkoL ***** válasza:

A fordító azért nem jelez hibát, mivel elvileg lehetséges, hogy az Inc() és Dec() eljárások 'elbánjanak' a QWord és Int64 típusú számokkal - Free Pascal -. Ha ciklusba kell - bár nem értem mi a fenének - mondjuk lehetnek spec. esetek, de ott is kiküszöbölhető - akkor while.... Inc(i) vagy hasonlók és mily okból kéne egy ciklust 18446744073709551615-ször lefuttatni.

Egy programozó a korlátozott kereteken belül is feltalálja magát, ha kell :)

2015. máj. 3. 12:07
Hasznos számodra ez a válasz?
 7/7 A kérdező kommentje:

A ciklust csak példának írtam, hogy ott rögtön kiírja: "ordinary expression", nem azért, mert ciklusban akartam volna használni az int64 változót, csak rá akartam mutatni hogy ciklusban jelzi hogy sorszámozott típust vár, inc és dec esetén nem.

Köszönöm a válaszokat.

2015. máj. 3. 12:36

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!