Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Problema con funzione rand

    Ciao,
    com'è possibile che il seguente codice non mi funzioni?

    codice:
    #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?

  2. #2
    Infatti È l'indirizzo della variabile che stampi. Sostituisci a printf ("%d\n\n", &n); printf ("%d\n\n", n);.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    ma per stampare le variabili intere non si usa sempre l'operatore indirizzo davanti ad esse nella funzione printf?

  4. #4
    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.
    Amaro C++, il gusto pieno dell'undefined behavior.

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

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    746
    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

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

  7. #7
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    & va usato nello scanf
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  8. #8
    Mio dio....

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

    Scusate per la perdita di tempo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.