2013-10-15 7 views
6

Perché il valore di int d 25 e non 26 dopo l'esecuzione del seguente frammento di codice?Risposta sconosciuta dopo l'esecuzione di n ++

int n = 20; 
int d = n++ + 5; 

Console.WriteLine(d); 
+5

possibile duplicato di [Qual è la differenza tra ++ i e i ++] (http://stackoverflow.com/questions/24853/what-is-the-difference-between-i-and -i) –

+0

Vedi anche: https://communities.coverity.com/blogs/development-testing-blog/2013/09/24/cc-and-c –

risposta

10

n++ è l'operatore "post-incremento", che incrementa solo il valore dopo il suo valore iniziale è stato usato nell'espressione circostante.

Il codice è equivalente a:

int d = n + 5; 
n = n + 1; 

per incrementare il valore prima il suo valore si abitua, utilizzare ++n, l'operatore di pre-incremento.

+1

+1 per scomporre la sintassi chirurgarabile equivalente. –

3

perché è necessario utilizzare ++n per utilizzare il valore incrementato in quell'espressione.

See, nella struttura di espressione non è incrementare n e quindi utilizzando tale valore in aggiunta a causa n++ restituisce il valore di n ma lo incrementa per la prossima espressione usata.

Tuttavia, ++n restituirà effettivamente il valore incrementato di n per questa espressione.

Pertanto, n++ + 5 cede 25 mentre ++n + 5 rendimenti 26.

2

n++ significa eseguire l'adizione dopo l'operazione, quindi prima d sarà uguale a n+5 e quindi n verrà generato.

2

Poiché n++ verranno dapprima assegnare il valore e dopo il completamento di iterazione viene incrementato questo è il motivo relativo dare 25

Quindi,

int d= n++ + 5; 

viene interpretato come

int d = n + 5; 
+0

perché downvote ?????? – Neel

1

A causa di che si sta utilizzando Postfix esprimere

int d = n++ + 5; 

dove compilatore prima assegnare valore a D, ma in seguito

int d = ++n + 5; 

voi hanno ottenuto d's valore 26

1

++: incremento postale operatore.

Il risultato dell'operatore post fi x ++ è il valore dell'operando.Dopo il risultato viene ottenuto , il valore dell'operando è incrementato

Quindi,

int d= n++ + 5; 

viene interpretato come

int d = n + 5; 

dopo l'esecuzione del interpretaion sopra. n viene incrementato di 1.

Problemi correlati