|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2007
Città: Milano
Messaggi: 145
|
[c] bus error inaspettato
questo è un pezzo di codice:
lab = (int **)malloc(sizeof(int *) * righe); for (i = 0; i <righe; i++) lab[i] = (int *)malloc(sizeof(int) * colonne); for(i=0; i<righe; i++) { for(j=0; j<colonne; j++) { scanf("%d", &lab[i][j]);}} lancio il programma con dei valori da inserire nella mia matrice lab in buffer, non riesco a capire come mai dopo l'ultimo valore inserito, quindi a lab[righe-1][colonne-1] ottengo bus error. Ho fatto diverse prove inserendo varie printf qua e la nel codice, e l'errore sta proprio alla fine della scanf. boh Ultima modifica di Tel Mark : 22-05-2009 alle 20:46. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1059
|
comunque questo non è c#
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Gia'. E' C.
Come e' dichiarata la matrice lab? Inoltre dovresti controllare i valori di ritorno della Malloc, che nel caso restituisse NULL significherebbe errore nell'allcazione di memoria.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Nov 2007
Città: Milano
Messaggi: 145
|
corretto l'errore nel titolo chiedo venia
la matricè è int **lab |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
per sicurezza la scanf scrivila cosi: scanf("%d", &(lab[i][j]))
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
![]() per esempio, qual é il risultato ufficialmente definito dallo standard di questa espressione? Codice:
char n = 1; return !~n; Codice:
char n = 1; return ~!n; |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
& sta un "piano" sotto a [].
! e ~ invece sono sulo stesso "piano", per il quale vale l'ordine di lettura da destra. Non so in quale standard siano definite precedenza/ordine, ma se fai una ricerca con google vedrai che i risultati sono sempre quelli (si trovano anche alcuni esempi di ambiguità). |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
1 - come ti ha detto gugoXX, occorre fare il controllo sul risultato della malloc(). In azienda, per esempio, consideriamo il mancato controllo un errore grave (blind faith). 2 - Hai un debugger? Se proprio non riesci a trovare l'errore potresti stampare l'indirizzo &lab[i][j]. Su una singola riga dovrebbe andare di 4 in 4, no?
__________________
In God we trust; all others bring data |
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
e come funziona invece per gli operatori unari che stanno "sullo stesso piano" ma su due lati diversi dell'operando? per esempio in che ordine vengono eseguiti gli operatori nell'espressione "++n++"? |
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
Quote:
Edit: comunque l'operatore postfisso e quello prefisso sono su livelli diversi. Ultima modifica di ||ElChE||88 : 23-05-2009 alle 12:49. |
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Sia che la valutazione avvenga da sinistra verso destra, sia che avvenga da destra verso sinistra, comunque deve prima fare il complemento e poi la negazione nel primo caso e prima la negazione e poi il complemento nel secondo.
Quote:
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:53.




















