PDA

Visualizza la versione completa : Problema con funzione rand


devil89
28-08-2006, 20:37
Ciao,
com' possibile che il seguente codice non mi funzioni?



#include <stdio.h>
#include <time.h>

int main()
{
int n;

srand(time(NULL));
n = rand()%5+1;
printf ("%d\n\n", &n);

system("pause");
return 0;

}


Mi stampa sempre il numero 2293620, che sembra l'indirizzo della variabile che stampo.
Come mai?

MItaly
28-08-2006, 20:54
Infatti l'indirizzo della variabile che stampi. Sostituisci a printf ("%d\n\n", &n); printf ("%d\n\n", n);.

devil89
28-08-2006, 21:04
ma per stampare le variabili intere non si usa sempre l'operatore indirizzo davanti ad esse nella funzione printf?

MItaly
28-08-2006, 21:18
Pardon, hai ragione. Il problema che sono abituato ad usare le classi di IO del C++.
Prova ad eliminare l'istruzione srand e vedi cosa succede.

devil89
28-08-2006, 21:24
Il fatto molto strano che levando l'operatore indirizzo (anche se non mi convinceva per il motivo che ti ho spiegato e che tu hai poi affermato) il numero veniva generato correttamente.

Non capisco :master: .

Ho poi provato a togliere la funzione srand e ho analizzato 2 casi:
- lasciando l'opetatore indirizzo non funziona e mi stampa l'indirizzo della variabile;
- togliendo l'operatore indirizzo funziona

Non capisco pi niente.
E' la prima volta che mi capita una roba del genere.

U-bahn
28-08-2006, 23:21
Originariamente inviato da devil89
ma per stampare le variabili intere non si usa sempre l'operatore indirizzo davanti ad esse nella funzione printf?
assolutamente no...con & hai l'indirizzo e, pertanto, viene stampato quello
il modo corretto questo


int n;
int *i;

n = 4;
i = &n;
printf ("%d %d ", n, *i);

infinitejustice
29-08-2006, 05:27
& va usato nello scanf ;)

devil89
29-08-2006, 10:41
Mio dio.... :dh: :dh: :dh: :dh:

Hai ragione...confondevo la scanf con printf.
Che vergogna!!!! :zizi:

Scusate per la perdita di tempo.

Loading