|
|
|
|
Strumenti |
12-03-2010, 15:43 | #41 | |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4905
|
Quote:
Grazie. |
|
12-03-2010, 15:50 | #42 |
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
|
12-03-2010, 18:57 | #43 | |
Member
Iscritto dal: Aug 2007
Messaggi: 235
|
Quote:
ps ci ho messo davvero 30 secondi buoni per capire che non sono diventato scemo autoquotandomi, ma eri davvero un'altra persona... bel nick! XD
__________________
Vendo Adattatore mini DP -> HDMI con audio |
|
12-03-2010, 19:17 | #44 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53970
|
||ElChE||88 e fix2000: per favore terminate istantaneamente questo flame.
|
12-03-2010, 19:59 | #45 |
Bannato
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
|
|
12-03-2010, 20:11 | #46 |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4905
|
Interessante, non sapevo che "terminare il flame" e "accusare gli altri di essere cretini e troll" fossero equivalenti.
Ogni giorno si impara qualcosa di nuovo! |
12-03-2010, 22:34 | #47 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
|
In C# l'esecuzione restituisce 0.
Questo perche' in C# l'operatore di postincremento ++ viene eseguito immediatamente dopo l'utilizzo dell'oggetto, in questo caso un intero. L'esecuzione quindi risulta Codice:
int a=0; a=a++; Viene incrementato a (in questo momento vale 1) il valore precedentemente salvato viene utilizzato per continuare l'operazione. La prosecuzione prevede un assegnazione. Viene di nuovo assegnato 0 ad a. Altro esempio: Codice:
int a = 2; int q = 123 + a++ + a++; 2) a viene incrementato di uno. (che vale 3 quindi) 3) viene eseguita la somma tra 123 e il valore 2 salvato = 125 4) viene salvato temporaneamente il valore di a, ovvero 3. 5) viene incrementato il valore di a, che varra' quindi 4. 6) viene eseguita la somma tra 125 e 3 precedentemente salvato = 128, che viene assegnata a q I passi 2 e 3 possono essere scambiati tra di loro nell'esecuzione Cosi' anche i passi 5 e 6. La sintassi C non impone un ordine piuttosto che un altro. Ma la differenza con il caso in studio precedente e' proprio qui. A seconda dell'ordine di esecuzione si ottiene 0 oppure 1.
__________________
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. Ultima modifica di gugoXX : 12-03-2010 alle 22:38. |
13-03-2010, 15:28 | #48 |
Senior Member
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2658
|
scusate ma io mi soffermerei un attimo su concetti più di logica che non di implementazione:
sappiamo che il post incremento agisce DOPO l'assegnazione: se fosse Codice:
int a = 0; int b; b = a++; nel caso in esame si sta incrementando il simbolo a. come avvenga usualmente tradotta questa operazione in assembly non ha alcuna rilevanza per 'decidere' quale risultato sarebbe lecito aspettarsi. morale: ho un operatore che incrementa DOPO l'assegnazione, e ho un simbolo ben preciso che viene incrementato ed è a. quindi per me il valore corretto dovrebbe essere 1. cioè a livello logico io ho esplicitamente detto che il contenuto di a dopo l'assegnazione debba essere incrementato. non ho detto che a visto come parametro deve essere incrementato mentre la variabile a sx dell'assegnamento no. quella è una distinzione che fa l'implementazione del linguaggio, non la logica secondo me. |
13-03-2010, 15:54 | #49 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2760
|
No, il punto è che l'incremento non viene fatto dopo l'assegnazione, ma dopo aver valutato il valore della variabile. L'esempio di gugoXX spiega benissimo questo fatto.
|
14-03-2010, 00:38 | #50 |
Senior Member
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2658
|
è lo stesso perché la valutazione della variabile è fatta per fare l'assegnazione. valuti, assegni, incrementi. l'esempio riportato invece conferma quanto dico. in quel caso l'operatore a sx è un operatore + anziché = ma la logica è la stessa: valuti sommi e incrementi, poi valuti sommi ancora e incrementi.
|
14-03-2010, 00:49 | #51 | ||
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2760
|
Quote:
Quote:
|
||
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:00.