Operatory zmniejszania i zwieszkania Jezyk C oferuje dwa niezwykle operatory zwiekszania i zmniejszania wartosci zmiennych. Operator zwiekszania ++ dodaje 1 do swojego argumentu. Opera- tor zmniejszania -- odejmuje 1. Czesto uzywalismy operatora ++ do zwiek- szania wartosci zmiennych, np. if(c== '\n') ++nl; Niezwykle jest to, ze operatory ++ i -- moga byc uzywane zarowno jako przedrostkowe (przed zmienna: ++n), jak i przyrostkowe (po zmiennej: n++). W obu przypadkach wynikiem jest zmiana wartosci zmiennej n, ale wyraze- nie ++n zwieksza wartosc zmiennej n przed jej uzyciem, natomiast wyraze- nie n++ zwieksza wartosc zmiennej n po uzyciu jej poprzedniej wartosci. Ozna- cza to, ze w kontekscie, w ktorym jest istotna takze wartosc (a nie tylko efekt) zwiekszenia, wyrazenia ++n oraz n++ sa rozne. Jesli n rowna sie 5, to x= n++; nadaje x wartosc 5, ale x= ++n; nadaje x wartosc 6. W obu przypadkach wartoscia zmiennej n stanie sie 6. Ope- ratory ++ i -- mozna stosowac tylko do zmiennych. Wyrazenia takie, jak x= (i+j)++ sa bledne. W kontekscie, w ktorym nie jest potrzebna wartosc, tylko sam efekt zwiek- szenia, np. if(c =='\n') nl++; uzycie operatora przedrostkowego czy przyrostkowego jest kwestia stylu. Istnieja jednak sytuacje, w ktorych specjalnie stosuje sie jeden z tych operatorow. Przy- kladowo rozwazmy funkcje squeeze(s,c), ktora usuwa wszystkie wystapienia znaku c z tekstu s. squeeze(s,c) /*usun wszystkie znaki c z tekstu s*/ char s[]; int c; { int i,j; for (i=j=0;s[i] !='\0';i++) if (s[i] !=c) s[j++] = s[i]; s[j] = '\0'; }