Navigation

2.1.1 Inkrement-und Dekrementoperatoren

Es gibt die unären Operatoren ++ zur Inkrementierung und -- zur Dekrementierung des Operanden um den Wert 1. Beide Operatoren können nur auf einen Operanden angewendet werden, der sich auf einen modifizierbaren Speicherbereich (lvalue) bezieht.
allg.: ++ lvalue /* Präfixnotation */  
  -- lvalue    
       
  lvalue ++ /* Postfixnotation */  
  lvalue --    

Präfixnotation: Inkrementierung und Dekrementierung vor Wertberechnung des Ausdruckes
   
Postfixnotation: Inkrementierung und Dekrementierung nach Wertberechnung des Ausdruckes
   
Nebeneffekt: Bei Inkrement- und Dekrementoperationen besteht der Haupteffekt in der Ausdrucksberechnung, während die Inkrementierung bzw. Dekrementierung des Operanden den Nebeneffekt darstellen. Oftmals jedoch ist der Nebeneffekt der eigentliche Zweck einer solchen Operation.

VERBATIM/b211: 

int x, y;
...
x = 3;
y = ++x;   /* Praefixinkrementierung: x = x + 1; y = x; */
...
x = 3;
y = x++;   /* Postfixinkrementierung: y = x; x = x + 1; */
...
x = 3;
++x;       /* ist identisch zu: x++; */

BEISPIELE/b211a.c: 

#include <stdio.h>

main()        /* Inkrement-Operatoren */
{       int x , y, z;

        x = y = 3;
        z = x++ - 2;  
        printf("x:%d y:%d z:%d\n",x,y,z);
        z = -x++ + ++y; 
        printf("x:%d y:%d z:%d\n",x,y,z);
        z = x / ++x; /* ++ hat Vorrang vor / */
        printf("x:%d y:%d z:%d\n",x,y,z);
}

BEISPIELE/b211b.c: 

#include <stdio.h>

long fakult(n)                     /* Berechnung von n! */
int n;
{
   long i, fak; 

   fak = i = 1;
   while (++i <= n)
        fak = fak * i;
   return(fak); /* Ergebnis an main-Funktion uebergeben */
}

main()              /* Argument ist Ergebnis von fakult */
{
  printf("10! = %d\n", fakult(10));
}

Aufgabe:
Welche Werte besitzen die Variablen x und i nach Ausführung folgender Anweisungen ?

VERBATIM/b211a: 

int i,x;			int i,x;

x = 1;				x = 1;
i = 0;				i = 0;
if ( --x )			if ( x-- )
   x = i++;			   x = i++;
else				else
   x = ++i;			   x = ++i;

Navigation