Anar al contingut

Operadors d'increment i decremento

De L'Enciclopèdia, la wikipedia en valencià

el Operador de increment i decremento són operadors unarios que agreguen o sostrauen un de les seues operants, respectivament. Són normalment implementats en llenguages de programació imperatius. En llenguages tipo C és normal tindre 2 versions (pre- i post-) de cada operador en semàntica llaugerament diferent. En llenguages tipo C, l'operador d'increment és escrit com ++ i el de decremento com --.

L'operador d'increment aumenta el valor del seu operant en 1. L'operant deu ser un tipo de senya aritmètic o punter, i deu fer referència a un objecte modificable. Similarment, l'operador de decremento disminuïx el valor del seu operant en 1. El valor de les busques s'incrementa (o disminuïx) per una cantitat que fa que apunt al següent (o anterior) element adjacent en memòria.

En llenguages que admeten abdós versions dels operadors, els operadors de pre-increment i pre-decremento aumenten (o disminuïxen) els seus operants en 1, i el valor de l'expressió és el resultat de l'increment (o decremento). En contrast, els operadors de post-increment i post-decremento incrementen (o decrementan) el valor dels seus operants en 1, pero el valor de l'expressió és el valor original del seu operant abans de l'increment (o decremento). En llenguages a on l'increment/decremento no és una expressió (Ej.: Go), només es necessita una versió (en el cas de Go, solament post operadors).

Ya que l'operador d'increment/decremento modifica el seu operant, l'us de més d'una volta dins de la mateixa expressió pot produir resultats no definits. Per eixemple, en expressions tals com x  ++x, no està clar en quina orde es deuen realisar la resta i l'operador d'increment. Situacions com esta són encara pijors quan s'apliquen optimisacions pel compilador, lo que podria donar lloc a un orde d'eixecució d'operacions diferent de lo que pretén el programador.

Eixemples

[editar | editar còdic]

Els següents fragments de còdic C ilustren les diferències entre operadors de pre i post increment/decremento:

int  x;
int  i;

// Operadors d'increment
x = 1;
i = ++x;    // x és ara 2, i és també 2
i = x++;    // x és ara 3, i és 2

// Operadors de decremento
x = 2;
i = x--;    // x és ara 1, i és 2
i = --x;    // x és ara 0, i és també 0

L'operador de post-increment és comunament usat en els subíndexs de vectores. Per eixemple:

// Suma d'elements d'un vector
float sumar_elements(float vec[], int n)
{
    float  sum = 0.0;
    int    i =   0;

    while (i < n)
        sum += vec[i++];    // Post-increment d'i, que recorre
                            //  els n elements del vector
    return sum;
}

Aixina mateix, l'operador d'increment és comunament utilisat en punters:

// Copia un vector a un atre usant punters
void copiar_vector(float des de, float fins a, int n)
{
    while (n-- > 0)            // Bucle que conta des de n fins a
        0 fins a++ = des de++;   // Copia l'element *(des de) a *(fins a),
                               //  després incrementa abdós punters
}

Tinga en conte que estos eixemples també funcionen en atres lenguajess de programació tipo C, com C++, Java, i C#.

Llenguages soportats

[editar | editar còdic]

En la següent llista, encara que incompleta, s'enumeren alguns dels principals llenguages de programació que soporten operadors d'increment/decremento.