Titolo: Numeri Integer e overflow automatico
Categoria: Info |
|
Ultimo Aggiornamento: 26/01/05 |
Il tipo
Integer in 4D può avere valori fra -32.768 e 32.767. Se viene inserito un valore maggiore o minore di questi limiti, il numero sarà modificato automaticamente per rientrarci: questa operazione si chiama "overflow".
Per esempio se aggiungi 1 ad un intero 32.767 esso diventerà -32768. Così se togli 1 da -32.768 otterrai 32.767.
Però bisogna anche sapere che in 4D (dalla versione 3 in poi) in realtà sono interi veri i campi e gli array. In realtà le varibili sono dei
Long integer (che hanno un limite molto più alto).
Per verificare la cosa, prova ad eseguire questo codice controllando nel debugger i valori ottenuti:
CREATE RECORD([Tabella])
[Tabella]Intero:=32766
[Tabella]Intero:=[Tabella]Intero+1 ` 32,767 = normale
[Tabella]Intero:=[Tabella]Intero+1 ` -32,768 = overflow
[Tabella]Intero:=[Tabella]Intero-1 ` 32,767 = overflow ancora!
ARRAY INTEGER(arrayInteger;1)
arrayInteger{1}:=32766
arrayInteger{1}:=arrayInteger{1}+1 ` 32,767 = normale
arrayInteger{1}:=arrayInteger{1}+1 ` -32,768 = overflow
C_INTEGER(variabile)
variabile:=32766
variabile:=variabile+1 ` 32,767 = normale
variabile:=variabile+1 ` 32,768 = non c'è l'overflow!!!!
If (Type(variabile)=
Is LongInt ) `infatti se controllo... è un Long integer
ALERT("variabile è di tipo long integer.")
End if
Inviato da: Umberto Migliore |
|
Visite: 13348 |
Se accedi con utente e password, puoi aggiungere dei commenti.