[ Divjak @ 26.12.2004. 19:21 ] @
Code: program bug; var i,f:integer; begin f:=1; for i:=1 to 10 do begin f:=f*i write (f,' '); end; end. kada ovo pokrenem rezultat je: Code: 1 2 6 24 120 720 5040 -25216 -30336 24320 zasto se ovo desava? hvala |
[ Divjak @ 26.12.2004. 19:21 ] @
[ reiser @ 26.12.2004. 21:43 ] @
Zato sto je maximalna vrednost koju f moze da ima = 32762, pa kad se ta vrednost prekoraci, pocinje se otpocetka, tj. od -32762. To je zbog toga sto si f deklarisao kao integer. Stavi da je f tipa LongInt ili Int64 (nisam siguran da li ovo postoji u pascalu).
poz [ bancika @ 26.12.2004. 23:18 ] @
LongInt postoji, a int64 ne
ako ti trebaju bas veliki brojevi (10> cifara) mozes da niz predstavis kao niz cifara (array [1..1000] of byte) pa da radis rucno mnozenje i ostale operacije. malo je teze tako ali... [ morlic @ 27.12.2004. 08:54 ] @
Kako ne postoji Int64? Koji ti Delphi koristis? Evo sta kaze Borland:
Citat: Code: Type Range Format Shortint -128..127 signed 8-bit Smallint -32768..32767 signed 16-bit Longint -2147483648..2147483647 signed 32-bit Int64 -2^63..2^63-1 signed 64-bit Byte 0..255 unsigned 8-bit Word 0..65535 unsigned 16-bit Longword 0..4294967295 unsigned 32-bit [ sasas @ 27.12.2004. 09:07 ] @
@morlic
obrati paznju na prvi post: var i,f:integer; sudeci po tome covek koristi neki stariji pascal (ima problema sa integerom koji je sirok 16 bita). ss. [ morlic @ 27.12.2004. 15:36 ] @
E pa stvarno...TP je izgleda neunistiv :)
@bancika: izvinjavam se zbog izletanja, skroz sam prevideo da covek radi u TP-u, pa sam odlucio da te opametim, kad ono... :) Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|