Incrementare o decrementare una variabile in C prima o dopo l'uso

Il linguaggio C è pieno di scorciatoie, e sono cose meravigliose. In primo luogo, fanno risparmiare digitazione tempo. Ancora più importante, i collegamenti consentono di esprimere alcune idee ancora divertenti e criptiche modi veloci, che è bene; I programmatori C possono ancora leggere il codice - nessun problema.

I collegamenti C ++ e - sono utilizzati per incrementare (l'aggiunta di uno a) e decremento (sottraendo uno da), rispettivamente. Quando si avvia l'assegnazione incrementato o decrementato valori alle altre variabili, però, è necessario prestare particolare attenzione a come si usa ++ e -.

Ecco un puzzle. Se alpha variabile è uguale 5, qual è il valore della variabile di beta dopo questa dichiarazione:

beta = alpha ++;

La risposta è 5. Il motivo è che il ++ è un operatore post-di incremento. Si incrementa il valore della variabile è utilizzato dopo la variabile. Ecco il codice per dimostrarlo:

#include <stdio.h>
int main ()
{
int alpha, beta;
alpha = 5;
beta = alpha ++;
printf ("Alpha =% d \ n", alpha);
printf ("Beta =% d \ n", beta);
ritorno (0);
}

Digita il codice nell'editor, salvarla, compilarlo ed eseguirlo:

Alpha = 6
Beta = 5

Se si vuole incrementare alfa prima di assegnare il valore di beta, ricordare che si può sempre dividere la linea 8 in due:

alpha ++;
beta = alpha;

Oppure, si può sfruttare il fatto che l'operatore ++ può andare su entrambi i lati della variabile. Quando ++ appare prima del nome variabile, come in ++ alfa, è pre-incrementando il valore di alfa.

Modifica Linea 8 del codice da leggere

beta = ++ alpha;

Salva su disco. Ricompilare ed eseguire. Osservare l'output:

Alpha = 6
Beta = 6

Il valore di alfa è stato incrementato per primo, e quindi il suo valore è stato assegnato alla beta variabile.

Si può fare la stessa cosa con l'operatore -. Se appare dopo una variabile, la variabile viene decrementato dopo l'uso. Ecco come tale modifica appare sulla Linea 8:

beta = alpha--;

In alternativa, se il - operatore viene visualizzato prima del nome della variabile, il valore è diminuito e quindi utilizzati:

beta = --alpha;

Si noti che questa costruzione non è consentito:

++ Alpha ++;

Questo non è "doppio di incremento." In realtà, il compilatore si arrabbia con te se si tenta una cosa del genere.