Barninga Z
a- a+

Gli operatori: autoincremento e autodecremento

Autoincremento e autodecremento 

Gli operatori di (auto)incremento e (auto)decremento sommanoe, rispettivamente, sottraggono 1 alla variabile acui sono applicati. L'espressione 

++a;

incrementa di 1 il valore di a,mentre 

--a;

lo decrementa. E' molto importante ricordare che essipossono essere prefissi o suffissi; possono,cioè, sia precedere che seguire la variabile a cuisono applicati. Il loro significato rimane il medesimo(sommare o sottrarre 1), ma il loro livello diprecedenza cambia. Nell'espressione 

a = ++b;

ad a viene assegnato il valore di bincrementato di 1, perché, in realtà,dapprima è incrementata la variabile b esuccessivamente il suo nuovo valore è assegnato ada. Invece, con 

a = b++;

ad a è assegnato il valore di b esolo successivamente questa è incrementata. Analogheconsiderazioni valgono nel caso dell'operatore didecremento. Ancora: nella 

if(a > ++b) ....

la condizione è valutata dopo avere incrementatob, mentre nella 

if(a > b++) ....

dapprima è valutata la condizione e poi vieneincrementata b

La differenza tra operatore prefisso e suffisso,però, scompare quando l'autoincremento dellavariabile sia parametro di una chiamata a funzione: conriferimento ad una riga come 

printf("%d" ,++a);

spesso non è possibile sapere a priori se aviene incrementata prima di passarne il valore aprintf(), o se, al contrario, l'incrementoè effettuato in seguito. Ci si potrebbe aspettare chela scrittura ++a determini l'incremento primadella chiamata, mentre a++ lo determini dopo;tuttavia il C non stabilisce una regola univoca. Ciòsignifica che ogni compilatore può regolarsi comemeglio crede. E questo a sua volta significa che possonoesserci compilatori che fissano a priori un modo univoco diprocedere, ed altri che invece decidono caso per caso in fasedi compilazione, sulla base, ad esempio, di opzioni diottimizzazione del codice in funzione della velocità,della dimensione, e così via. E' dunqueindispensabile consultare molto attentamente ladocumentazione del compilatore o, meglio ancora, evitarepossibili ambiguità dedicando all'incremento dellavariabile un'istruzione separata dalla chiamata afunzione, anche in vista di un possibile porting delprogramma ad altri compilatori. 

Gli operatori "++" e"--" modificano sempre il valore dellavariabile[2] a cui sono applicati. 

 



Ti potrebbe interessare anche

commenta la notizia