Comunque l'array è di int e non di byte perché con il byte non potrei utilizzare il -1.
Ducembarr:
a parte che il fatto che funzioni (la hai provata? evidentemente no, altrimenti non avresti scritto quello che hai scritto) dimostra che ti sbagli
Non l'ho provata, ma hai ragione perché quello è un puntatore ad int quindi il compilatore "sa" che deve avanzare di 2 ossia di sizeof(int).
ma comunque un minimo di aritmetica dei puntatori servirebbe di conoscerla........
Come ho detto, non ho solamente considerato il fatto che fosse un puntatore ad int ma solo un puntatore, ma comunque un "minimo di aritmetica dei puntatori" la conosco, e bene, altrimenti non ti avrei citato neanche il fatto che in un puntatore per passare all'elemento successivo il passo de l'hai con la sizeof(), per cui tu potresti anche piantarla di essere aggressivo ed insultare chi non conosci: chiedi o spiega le tue ragioni, senza fare il saccente, grazie.
militandri:
La soluzione del -1 finale non convince neanche me, ma non saprei come altro risalire al numero di elementi nell'array.
Beh ti suggerirei di fare come si fa in genere, ossia nella comunicazione mandi come primo byte ad esempio la lunghezza del "pacchetto" di dati. Quindi nel tuo caso di 4321 manderai i byte preceduti da 0x04 (lunghezza dei successivi byte):
0x04 0x04 0x03 0x02 0x01
In questo modo giochi solamente con byte ossia numeri positivi e non ti sbagli. O addirittura impacchettare le cifre a gruppi di 2 in un byte (i due nibble sono le due cifre, tanto vanno da 0 ad 1), sempre precedute dal numero di cifre, ad esempio:
0x04 0x43 0x21
Ovviamente se le cifre fossero dispari, farai ad esempio per 321:
0x03 0x32 0x10
quindi l'ultimo nibble sarà sempre a zero (e comunque ignorato).
Ma se quell'array lo metti intanto come byte (tra l'altro risparmi pure memoria) e imposti il terminatore ad un qualunque valore non compreso tra 0 e 9, puoi usare 0xFF che non è -1 ma 255:
0x04 0x03 0x02 0x01 0xFF
Ducembarr:
ma cosa stai dicendo?
T'ho già detto più volte, in altre occasioni, che tollero molto poco certi atteggiamenti, quindi ... o usi maggior cortesia e minor arroganza o, ti avviso, la prossima volta applicherò un BAN.
Guglielmo
docdoc:
Non l'ho provata, ma hai ragione perché quello è un puntatore ad int quindi il compilatore "sa" che deve avanzare di 2 ossia di sizeof(int).senza fare il saccente, grazie.
cioe': tu non hai provato, hai sbagliato, hai criticato e il saccente sarei io?
Applicato un BAN di 10 giorni all'utente Ducembarr per i toni utilizzati durante la discussione.
Guglielmo
PS: @Salvorhardin: attenzione a NON far utilizzare l'account a tuo fratello o il BAN sarà permanente per entrambi.
Ducembarr:
cioe': tu non hai provato, hai sbagliato, hai criticato e il saccente sarei io?
Vedi, io ti ho risposto educatamente e mettendo pure delle faccine (e ti assicuro che ORA mi sto trattenendo molto).
Se tu hai capito che io ho sbagliato qualcosa (oltre al fatto che quando sbaglio io lo ammetto), lo spieghi, ma lo fai in modo altrettanto educato e cortese.
Ma dire che, senza conoscermi, secondo te non conosco "un minimo di aritmetica dei puntatori" si, è un atteggiamento da saccente ed è estremamente irritante. Se vorrai proseguire usando toni ed atteggiamenti più amichevoli sarò felice di rileggerti.
docdoc:
Beh ti suggerirei di fare come si fa in genere, ossia nella comunicazione mandi come primo byte ad esempio la lunghezza del "pacchetto" di dati. Quindi nel tuo caso di 4321 manderai i byte preceduti da 0x04 (lunghezza dei successivi byte):
0x04 0x04 0x03 0x02 0x01
In questo modo giochi solamente con byte ossia numeri positivi e non ti sbagli. O addirittura impacchettare le cifre a gruppi di 2 in un byte (i due nibble sono le due cifre, tanto vanno da 0 ad 1), sempre precedute dal numero di cifre, ad esempio:
0x04 0x43 0x21
Ovviamente se le cifre fossero dispari, farai ad esempio per 321:
0x03 0x32 0x10
quindi l'ultimo nibble sarà sempre a zero (e comunque ignorato).Ma se quell'array lo metti intanto come byte (tra l'altro risparmi pure memoria) e imposti il terminatore ad un qualunque valore non compreso tra 0 e 9, puoi usare 0xFF che non è -1 ma 255:
0x04 0x03 0x02 0x01 0xFF
Infatti ho già fatto così, ovvero il primo byte annuncia la lunghezza dell'informazione. Però non ci avevo pensato di mettere un byte più alto di 9. Effettivamente non lo riceverebbe mai. Grazie mille.
Bah, io mi astengo...
Mi interessa solo capire l'applicazione dell'autore