> Come da oggetto che differenza c'è fra uno static int e un int? e comporta
> modifiche allo stack?
Gli static mi pare che non siano salvati nello stack .. la differenza piu'
determinante e' che le variabili staci non vengono eliminate all'uscita
della funzione, ma il loro valore viene tenuto in memoria, cosi' se torni a
chiamare
void foo(void) {
static int bar;
bar ++;
}
incrementerai il valore ogni volta di uno.
--
Qualsiasi - Linux Registered User
"We all know Linux is great...it does infinite loops in 5 seconds." Torvalds
http://www.gnu.org/philosophy/no-word-attachments.it.html
> Come da oggetto che differenza c'č fra uno static int e un int? e comporta
> modifiche allo stack?
Una variabile "static int" č utilizzata quando si vuole mantenere il valore
memorizzato dopo una uscita da una funzione.
Una variabile "int" č utilizzata quando si definisce una variabile il cui
valore una volta usciti dalla funzione stessa viene perso.
Una variabile di dipo INT, e STATIC INT, puň assumere vaoli compresi
tra -32768 e +32768 (almeno credo) per valori da 0 a 65536 si deve mettere
"UNSIGNED" prima di definire "INT".
> Scusate ma ho un esamello il 5 e non ho ben capito la differenza che non č
> stata nemmeno trattata a lezione.
Vedi di studiare di piů :-P.
Ciao Gabriele.
Se nn ricordo male era cosi :)
>
> Una variabile di dipo INT, e STATIC INT, può assumere vaoli compresi
> tra -32768 e +32768 (almeno credo) per valori da 0 a 65536 si deve mettere
> "UNSIGNED" prima di definire "INT".
il range che hai dato tu è per 2 byte. Immagino che il suo int sia di 4
byte: da -2MiliardiEunPo a +2MiliardiEunPo
Comunque nessuno di quelli che ha risposto ha fatto notare il diverso
valore di "static" a seconda che si trovi in una funzione o accanto alla
dichiarazione di una variabile globale (in questo caso la variabile viene
trattata come 'visibile' solamente all'interno del file in cui è
dichiarata; nell'altro caso ti hanno già risposto)
> Ciao Gabriele.
Ciao
Io direi che va da INT_MIN a INT_MAX ;) Il C definisce queste macro
proprio per il fatto che la dimensione di un int non e` nota a priori
(conosci solo quella minima: 2 byte). Se int e` grande N byte il range
e` - 2^(CHAR_BIT * N - 1), 2^(CHAR_BIT * N - 1) - 1
Luca
--
Home: http://kronoz.cjb.net
I went to God just to see
And I was looking at me
Saw heaven and hell were lies
When I'm God everyone dies
>Se int e` grande N byte il range
>e` - 2^(CHAR_BIT * N - 1), 2^(CHAR_BIT * N - 1) - 1
Se la macchina funziona in complemento a due.
--
S.L.
Sono _quasi_ sicuro che lo standard ammetta solo quello. Controllero`.
Luca
--
Home: http://kronoz.cjb.net
Il piu` bel momento dell'amore e` quando ci si illude che duri per
sempre; il piu` brutto, quando ci si accorge che dura da troppo.
...ma ESISTE oggi un computer che NON lavori
in complemento a 2? E qual'č?...
>...ma ESISTE oggi un computer che NON lavori
>in complemento a 2? E qual'č?...
Computer credo di no (una volta avevo letto un articolo bellissimo
su fourmilab.ch sui problemi causati dall'esistenza dello zero
negativo sull'Univac - se avete tempo e` piuttosto interessante, anche
se credo fosse legato piu` all'assembly che al C).
Alcuni processori per DSP, che si progammano anche in C/C++ (gcc ne
supporta qualcuno, mi dicono) lavorano anche in complemento a uno, non
mi chiedere perche`, sara` probabilmente piu` comodo per
l'implementazione di alcuni algoritmi.
--
S.L.
No, in effetti ammette complemento a 2, a 1, e magnitudine-segno.
Luca
--
Home: http://kronoz.cjb.net
Not an editor command: Wq
> Kronos <kronos...@kronoz.cjb.net> ha scritto:
>> S.L. <ess...@despammed.com> ha scritto:
>>> Kronos <kronos...@kronoz.cjb.net> ha scritto
>>> (<bt9ua0$hr8$1...@dreamland.darkstar.lan>):
>>>
>>>>Se int e` grande N byte il range
>>>>e` - 2^(CHAR_BIT * N - 1), 2^(CHAR_BIT * N - 1) - 1
>>>
>>> Se la macchina funziona in complemento a due.
>>
>> Sono _quasi_ sicuro che lo standard ammetta solo quello. Controllero`.
>
> No, in effetti ammette complemento a 2, a 1, e magnitudine-segno.
>
> Luca
ma a questo punto scusatemi l'ignoranza. Che vuol dire che un computer
lavora col completamento a 2 a 1 e ... a _MAGNITUDINE-SEGNO_ !:P
> ma a questo punto scusatemi l'ignoranza. Che vuol dire che un computer
> lavora col completamento a 2 a 1 e ... a _MAGNITUDINE-SEGNO_ !:P
google ?!?
ho cercato "complemento due uno" e mi e' venuto fuori come primo link:
http://cli.sc.unica.it/didonline/fondamenti/Fondamentipart3-STAMPA.pdf
e poi:
http://www.dmi.unict.it/~gallo/vecchiePagine/downloads/lezioni_programmazione1/codici_binari2.PDF
e:
http://weblab.phys.uniroma1.it/Lab3/PVicini/Trasparenze/lezione1.1.pdf
Leggili credo possano rispondere alle tue domande (non gli ho letti).
Alternativamente puoi documentarti su di un libro di architettura degli
elaboratori.
Quando ti sarai documentato da solo, se ancora avrai qualche domanda a
riguardo saro' lieto di risponderti (se sono in grado ;-)
Tommy
Addirittura lo static puo' essere inserito prima di un prototipo di una
funzione, dando cosi' lo scope della funzione solo al modulo in cui e'
inserita.
Ciao
Giuseppe