Per il beneficio di persone diverse da Kenneth, il punto dell'operatore del prefisso è "incrementare questo", e il punto dell'operatore postfisso è "incrementare questo, ma se sono usato in un'espressione più lunga, usa il vecchio valore, non il nuovo valore ".
Quindi, ogni volta che vengono utilizzati in un'espressione più ampia, in genere generano risultati diversi tra loro. Ad esempio, confronta:
int countdown = 10;
while (countdown != 0) {
cout << (countdown++) << "...\n";
}
cout << "BOOM!";
con:
int countdown = 11;
while (countdown >=1 ) {
cout << (--countdown) << "...\n";
}
cout << "BOOM!";
o
int countdown = 10;
do {
cout << (countdown) << "...\n";
--countdown;
} while (countdown);
cout << "BOOM!";
Notate le sottili differenze. Per me, questo esempio è più facile quando (1) il numero inizializzato se il primo numero è stampato (2) il decremento fa parte dell'espressione più grande. (Nella vita reale, dovresti usare un ciclo "for" per questo particolare esempio, ma penso che ci saranno sempre degli esempi in cui prefisso o postfix è leggermente più chiaro.)
Tuttavia
Tuttavia, nella scrittura di codice moderna, il 99% delle volte trovo più facile leggere a lungo termine se l'incremento è sempre un'istruzione separata, anche se è leggermente più lungo. Quindi la differenza in realtà non conta davvero, se ci fosse solo un operatore di incremento che non può essere usato in un'espressione stessa, mi interesserebbe di rado.
Sommario
-
Se usi un'espressione postfissa o prefisso operatori di incremento in un'espressione, dovresti usare quello che fa ciò che intendi, non l'altro. Se non lo fai, otterrai quasi sempre la risposta sbagliata [1].
-
Tuttavia, di solito NON li usi in un'espressione, nel qual caso non importa molto che usi.
-
Ma se non ha importanza, usa il prefisso perché dichiara che la tua intenzione di "incrementare senza preoccuparti del valore di ritorno" è migliore e potrebbe occasionalmente impattare sul rendimento (vedi la domanda collegata nei commenti sotto l'articolo ).
[1] Anche essere consapevoli dei soliti avvertimenti come mai aumentare lo stesso valore due volte in una dichiarazione. Questo non funziona o non fa ciò che ti aspetti dalla maggior parte dei compilatori, e non sarebbe chiaro neanche se lo facesse.