Operatory

Poznaliśmy już operatory logiczne (&&, ||, !) i arytmetyczne (+, -, *, /, %) oraz porównania (==, !=, <, >, <=, >=).

Operatory przypisania

Poza operatorem przypisania =, który powoduje przypisanie zmiennej stojącej po lewej stronie wartości wyrażenia po stronie prawej istnieją także operatory działające w bardziej złożony sposób. Są to
+=dodaj
-=odejmij
*= pomnóż
/= podziel
%= przypisz resztę modulo

Oto przykład zastosowania:

int n=2;
n+=7; // teraz n jest równe 9
n/=3; // a teraz n==3

Uwaga: Po lewej stronie każdego z powyższych operatorów musi znajdować się zmienna.

Operatory zmniejszania i zwiększania

Są to jednoargumentowe operatory ++ oraz --, które można używać na dwa sposoby - umieszczając je przed albo po argumencie. W obu przypadkach ich działanie jest jednakowe - operator ++ zwiększa argument o 1, a -- ten argument zmniejsza o 1. Jedyna różnica polega na tym, że operator przedrostkowy zwraca zwiększoną (dla ++) lub zmniejszoną (dla --) wartość, a operator przyrostkowy zwraca wartość pierwotną.

Przykład:

int a, b, c;
a=5;
b=a++; // teraz a==6, b==5
c=--b; // a teraz b==4, c==4

Uwaga: Tak jak poprzednio, argument musi być zmienną.

Operator ?

Składnia operatora ? jest następująca:

wyrażenie_logiczne ? wyrażenie_1 : wyrażenie_2
Jeśli wyrażenie_logiczne jest prawdziwe, to wynikiem wyrażenia jest wyrażenie_1; w przeciwnym przypadku wyrażenie_2.

Przykład: Wartością wyrażenia (n<0 ? -n : n) jest wartość bezwzględna (moduł) liczby n.

Operator ,

Składnia operatora , jest następująca:

wyrażenie_1, wyrażenie_2
Najpierw obliczane jest wyrażenie_1 a następnie wyrażenie_2. Wartością jest wartość wyrażenia_2. Operator ten jest używany zazwyczaj w instrukcji for, kiedy potrzeba zainicjalizować wiele zmiennych.

Zasięg zmiennych

Każdy obiekt (zmienna lub funkcja) widoczna jest w pewnym określonym zasięgu. Funkcje są widoczne od miejsca deklaracji do końca programu (nie jest możliwe zagnieżdżanie funkcji, tj. umieszczanie jednej wewnątrz drugiej). Zasięg zmiennej rozpoczyna się w miejscu, gdzie jest zadeklarowana, a kończy na końcu bloku, w którym deklaracja się znajduje.

Przykład:

int i; // Tu widać tylko i

void f(int j) { // Tutaj i oraz j
   int i=j;
   int k=j; // tu i,j,k
   for(int n=1; n<k; ++n) {
      ... // i,j,k,n
   } // tu znika n
   ...
} // tu znika j oraz k
... // i jest dostępne do końca
Zmienne mogą być deklarowane poza jakąkolwiek funkcję - nazywają się wówczas zmiennymi globalnymi.

Uwaga: Zmienne należy deklarować z takim zasięgiem, w jakim są rzeczywiście używane - zmiennej używanej tylko w jednej funkcji nie należy deklarować jako globalnej; licznik pętli nie musi być dostępny w całej funkcji.

Rekursja

Dozwolone jest wywoływanie funkcji wewnątrz jej samej. Każde wywołanie powoduje stworzenie nowej kopii parametrów i zmiennych lokalnych. Oto przykładowa funkcja korzystająca z rekursji:
int silnia(int n) {
   if(n>0)
      return n*silnia(n-1);
   else
      return 1;
}