i ++ vs i + = 1 in cicli, perché valutare? [chiuso]

0

Perché la maggior parte dei programmatori usa i++ in cicli? Non significa valutare e incrementare . Trovo più logico utilizzare solo un incremento i+=1 , perché è tutto ciò che voglio.

WriteLn(i++); valuterà i e quindi incrementerà, rimuoverà in qualche modo la parte di valutazione se i++ è usata nei cicli?

    
posta Dereexk 23.07.2015 - 15:42
fonte

3 risposte

5

i++ significa "recupera il valore di i , quindi incrementalo e restituisce il valore recuperato". Può essere utilizzato nelle espressioni per ottenere un valore e aumentarlo in un colpo solo. Può anche essere usato come una dichiarazione:

i++;

nel qual caso il valore restituito viene scartato. In tal caso è equivalente a i += 1;

Se usato in un ciclo, lo stesso principio è applicato:

for (var i = 0; i < 10; i++)

è equivalente alla scrittura:

for (var i = 0; i < 10; i += 1)

Il primo è più breve (e probabilmente più facile da leggere), quindi è diventato la norma.

C'è comunque un avvertimento nel dire che sono equivalenti. Considera il seguente codice:

var i = 0;
Console.WriteLine(i++);
Console.WriteLine(i += 1);
Console.WriteLine(++i);

L'output è 0 , 2 e 3 mentre il precedente legge e poi incrementa, mentre gli altri due incrementano quindi la lettura.

    
risposta data 23.07.2015 - 15:48
fonte
1

Non c'è una ragione tecnica sottile per questo. L'uso di ++ è la forma più idiomatica, probabilmente perché salva una battitura (o tre se si mettono spazi attorno a + =). La "parte di valutazione" verrà probabilmente ottimizzata in qualsiasi lingua se è importante.

    
risposta data 23.07.2015 - 15:48
fonte
1

Se stai contando le pietre chiave salvate, non dimenticare il possibile spostamento; + e = sono sulla stessa chiave in molti layout.

    
risposta data 23.07.2015 - 21:38
fonte

Leggi altre domande sui tag