A C programozás alapjai (2. rész)

Az előző részben nem túl részletesen foglalkoztunk a változókkal, illetve azok deklarálásának szabályaival, ezt a hiányt pótoljuk most be.

A C nyelv megkülönbözteti a kis- és nagybetűket. Tehát ha egy változó nevét (azonosítóját) megadjuk kisbetűvel, akkor ügyelni kell arra, hogy legközelebb is kisbetűt használjunk. Így a következők különböző azonosítók:

envaltozom

Envaltozom

ENVALTOZOM

envaltOZoM

enVAltoZOM

és így tovább.

Továbbá az azonosító nem tartalmazhatja a következő karakterek egyikét sem: !, , #, %, &, , (, ), *, +, -, ,(vessző), :, ;, <, >, =, ?, [, ], \, /, ^, {, }, |. Van még egy kikötés: az azonosítók nem kezdődhetnek számmal, megengedett azonban az alulhúzás (_) használata. Általában a rendszer által használt azonosítók elején szerepel ez a karakter. Csupa nagybetűvel szokás megadni az előfordító által használt szimbólumok nevét, kisbetűvel az azonosítók nevét. Az olyan azonosítókban, amelyek értelmes szavakból lettek összeállítva, a szóhatáron általában vagy alulhúzást használunk, vagy az egyes szavakat nagybetűvel kezdjük. Vannak olyan azonosítók, amelyek speciális jelentéssel bírnak. Ezek az úgynevezett foglalt szavak vagy kulcsszavak. Nem lehet őket átdefiniálni, csak az eredeti jelentésükkel szabad őket használni. Az ANSI C foglalt szavai a táblázatban láthatók. Ezeket a Windows-zos rendszerek (pl. a Dev-C++) kiemelik, általában félkövér betűvel. Ezen kívül vannak még a szabványon kívüli foglalt szavak is, ezek fordítónként változnak. Fontos tudni, hogy ezek használata csökkenti a C program hordozhatóságát, és nem biztos, hogy lefordítható lesz egy másik platformon is.

auto

double

int

struct

break

else

long

switch

case

enum

register

typedef

char

extern

return

union

const

float

short

unsigned

continue

for

signed

void

default

goto

sizeof

volatile

do

if

static

while

Ezen rész témájához szorosan kapcsolódik az operátorok témaköre. Tisztázzuk, mi az operátor. Az operátor egy olyan szimbólum, amely azt jelzi a fordítónak, hogy mit tegyen az operandusokkal. Az operandusok a nyelv azon elemei, amelyeken az operátorok kifejtik hatásukat. A kifejezéseket operátorok és operandusok alkotják.

Kétféle kifejezés létezik az operátortól függően: egyoperandusú - prefixes és postfixes, és kétoperandusú. (létezik egy háromoperandusú operátor is, a feltételes operátor, melynek használatával igen tömör kifejezéseket írhatunk). A prefixes kifejezés általános alakja a következő: operátor operandus. A postfixesé pedig: operandus operátor. Néhány példa:

a++; &szam; -x; sizeof(y) stb.

A kétoperandusú kifejezések sem bonyolultabbak: operandus operátor operandus. Példa: a += 3; d + 5; 3-b; f-x; a<<4 stb.

Itt nem fogom felsorolni az összes operátor, mert nem túl érdekes, majd amikor találkozunk velük, ismertetem működésüket.

A kifejezések helyes használatának érdekében ismernünk kell az elsőbbségi (precedencia) szabályokat. Nem kell bonyolult dologra gondolni, ez a műveletek sorrendjéhez hasonlít a matematikában, olyannyira, hogy a matematikai kifejezések esetében meg is egyeznek velük. A sorrendet meg is változtathatjuk zárójelek segítségével, de erre csak kerek zárójelet () használhatunk. Példák:

A 4 * 5 + 6 kifejezés értéke 26. Viszont a 4 * (5 + 6) kifejezésé 44.

A precedencia szabály csak akkor használható, ha a kifejezésben nem azonos precedenciájú műveletek szerepelnek. Azonban egy kifejezésben azonos precedenciájú műveletek is szerepelhetnek. Hogyan dönti el a fordító ilyen esetekben, hogy miként értékelje ki a kifejezéseket? Ilyenkor az asszociativitási szabály az irányadó. Az asszociativitás azt mutatja meg, hogy az azonos precedenciájú műveleteket jobbról balra, vagy balról jobbra kell –e elvégezni (a legtöbb esetben balról jobbra, ha nem így van, arra külön kitérek). Ezért nem eredményez szintaktikai hibát a következő kifejezés:

a = f = d = c = 54;

Az operátorokat négy nagy csoportra oszthatjuk fel:

Elsődleges operátorok:

Ezekkel csak a későbbiekben ismerkedünk meg, mert speciális nyelvi szerkezetek kapcsolódnak hozzájuk. Ilyen operátorok: (), [], ->, .

- Aritmetikai operátorok

A szokásos négy alapművelet plusz  a maradékképzés operátora ( % ).

- Logikai és összehasonlító operátorok

Az olyan kifejezésekben használjuk őket, amelyekben összehasonlítunk valamit (if, while ). Ezekre a feltételes kifejezések tanulásakor térünk ki.

- Léptető operátorok

A léptető operátorok a változók értékének eggyel való növelésére illetve csökkentésére használatosak. Növelésre: ++, csökkentésre: --. Fontos dolog, hogy mindkettőnek van prefixes és postfixes változata. Ez bonyolultabb kifejezéseknél lényeges. Például:

int a, b=3;

a = ++b;

Így mind az a, mind a b változó értéke 4 lesz. Ezzel szemben:

int a, b=3;

a = b++;

Az a értéke 3, a b pedig 4!

Lehet, hogy ez a rész kicsit szárazra sikeredett, de ígérem, a következő már izgalmasabb lesz.

Szelei Tamás