|
|
|
![]() |
|
Strumenti |
![]() |
#1 | |
Member
Iscritto dal: Jan 2008
Messaggi: 107
|
Problema variabile in C
Salve, la mia domanda è semplice e per molti di voi sembrerà deficiente:
Quote:
|
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
|
Va che a me non si modifica niente., 0 era prima e 0 rimane dopo..
![]() Minigw su wxp 32 bit.. ![]() |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jan 2008
Messaggi: 107
|
perchè allora a me da sempre dei valori diversi??? Il primo è sempre 0 e l'altro cambia sempre, tipo 27, 32, 30... uso Ubuntu...
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
|
ma.... a che serve stampare 2 volte un valore inizializzato a 0 prima e dopo un ciclo ?
nemmeno a me modifica nulla... gcc 4.2 su ubuntu e osx |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2774
|
Prova ad inizializzare il vettore count in un altro modo, io quel metodo non l'avevo mai visto (l'avevo visto per inizializzare singolarmente i vari elementi del vettore, e contemporaneamente definirne la quantità, non per inizializzarli tutti).
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
ma il debug cosa dice? Debuggando trovi il problema, se c'è un problema...
|
![]() |
![]() |
![]() |
#7 | ||
Senior Member
Iscritto dal: Dec 2004
Città: Milano
Messaggi: 331
|
Attento, l'istruzione
Quote:
Quote:
Se non dà un segmentation fault probabilmente è perché l'indirizzo di memoria successivo a rand[11] è usato dallo stesso programma, e probabilmente x va a finire proprio lì e viene sovrascritto in qualche modo. Ecco perché viene modificato. Quelli che non hanno problemi, invece, probabilmente è perché o non è mai uscito il numero 12 sommando i 2 termini casuali (improbabile, avviene con probabilità 1/36, su 1000 numeri dovrebbe capitare un sacco di volte), oppure perché in quell'indirizzo di memoria è stato messo qualcos'altro, e quindi l'errore c'è ma non si vede. Magari viene sovrascritta la i, e quindi il loro ciclo viene eseguito di fatto più o meno di 1000 volte.
__________________
Elrond sul forum di TGM |
||
![]() |
![]() |
![]() |
#8 | |
Member
Iscritto dal: Jan 2008
Messaggi: 107
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Dec 2004
Città: Milano
Messaggi: 331
|
Purtroppo no, il C non ti avverte. O l'indirizzo errato è fuori dallo spazio di memoria del programma, e allora interviene il sistema operativo a bloccarti con un segmentation fault, oppure non ti dà nessun errore. Quando si dice che il C è molto potente ma lo scotto da pagare è che è facile sbagliare, si intende proprio questo.
Ciao!
__________________
Elrond sul forum di TGM |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:33.