Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Differenza fra static int e int

77 views
Skip to first unread message

Loggione

unread,
Jan 4, 2004, 7:39:20 AM1/4/04
to
Come da oggetto che differenza c'č fra uno static int e un int? e comporta
modifiche allo stack?
Scusate ma ho un esamello il 5 e non ho ben capito la differenza che non č
stata nemmeno trattata a lezione.
grazie,
loggione


P

unread,
Jan 4, 2004, 7:56:02 AM1/4/04
to
Uh?!? Cos'e' questo? Un messaggio di Loggione? Vediamo:

> 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

Kappa

unread,
Jan 4, 2004, 7:58:49 AM1/4/04
to

"Loggione" ha scritto nel messaggio:

> 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.


kikko

unread,
Jan 4, 2004, 10:03:36 AM1/4/04
to
In pratica è un mix fra variabile globale e locale: visibilità limitata alla
funzione in cui è dichiarata (locale). Durata del programma (globale)

Se nn ricordo male era cosi :)


Matic

unread,
Jan 4, 2004, 2:01:40 PM1/4/04
to
On Sun, 04 Jan 2004 12:58:49 +0000, Kappa wrote:

>
> 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

Kronos

unread,
Jan 4, 2004, 3:50:08 PM1/4/04
to
Matic <mati...@hotmail.com> ha scritto:

>> 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

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

S.L.

unread,
Jan 4, 2004, 5:30:40 PM1/4/04
to
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.

--
S.L.

Kronos

unread,
Jan 4, 2004, 7:17:25 PM1/4/04
to
S.L. <ess...@despammed.com> ha scritto:

Sono _quasi_ sicuro che lo standard ammetta solo quello. Controllero`.

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.

Tin Toy

unread,
Jan 4, 2004, 10:37:18 PM1/4/04
to
S.L. wrote:
> Se la macchina funziona in complemento a due.

...ma ESISTE oggi un computer che NON lavori
in complemento a 2? E qual'č?...

S.L.

unread,
Jan 5, 2004, 11:53:26 AM1/5/04
to
Tin Toy <massim...@hotmail.com> ha scritto
(<OZ4Kb.41208$VW.18...@news3.tin.it>):

>...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.

Kronos

unread,
Jan 5, 2004, 12:18:09 PM1/5/04
to
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.

Not an editor command: Wq

Matic

unread,
Jan 5, 2004, 2:29:52 PM1/5/04
to
On Mon, 05 Jan 2004 17:18:09 +0000, Kronos wrote:

> 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

Tommy

unread,
Jan 5, 2004, 3:30:43 PM1/5/04
to

"Matic" <mati...@hotmail.com> wrote

> 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

Giuseppe³

unread,
Jan 5, 2004, 4:10:12 PM1/5/04
to
> 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)

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


0 new messages