next up previous contents
Elõre: A feltételes utasítás Fel: Utasítások Vissza: Utasítások

Kifejezés-utasítások

Bármely kifejezés pontosvesszõvel lezárva szintén utasítás, és a kifejezés kiértékelését vonja maga után, majd a kapott érték eldobásra kerül. Természetesen ennek akkor van tényleges haszna, ha az adott kifejezésnek van valamilyen mellékhatása, mint például változó értékének módosítása vagy függvény meghívása. A pelda.c-ben az alábbi kifejezés-utasítások találhatók:

            c = tolower(c);
            c = toupper(c);
            putchar(c);
Az elsõ két kifejezésben két mellékhatást is kiváltottunk, egy függvényhívást és egy értékadást. (Valójában a fenti "függvények" mind makróként vannak megvalósítva, de ez mondanivalónk lényegét nem befolyásolja.) Szóba jöhetnek még a fenti típusúakon kívül olyan kifejezésutasítások is, amelyek inkrementáló, vagy dekrementáló operátort tartalmaznak, például x++; Ezekben az esetekben lényegtelen, hogy a prefix vagy a postfix változatot használjuk. Szeretnénk felhívni a figyelmet arra, hogy szintaktikailag a következõ utasítások is helyesek:
            hiba[3];
            8;
            a == b;
            main;
de nem csinálnak semmit. (Ha engedélyezzük, a BORLAND C++ ezt is jelzi a Code has no effect figyelmeztetéssel.) Különösen a Pascal-os gyakorlattal rendelkezõk figyelmét hívjuk fel nyomatékosan arra, hogy ha egy függvény nem vár paramétert és nem is ad vissza (tehát teljesen procedure jellegû), meghívásakor akkor is ki kell mögé írni az üres ( ) zárójel párt, hiszen ez jelzi azt, hogy a függvényt aktivizálni szeretnénk (függvényaktivizáló operátor). A fenti utolsó példa is helyes szintaktikailag (az adott függvény kezdõcímét adja, lásd a 1.5.1 és 1.9.8 alatt leírtakat), és ha nem törõdünk a figyelmeztetéssel (vagy nem engedélyezzük), nehezen kideríthetõ hibát szerzünk magunknak.

Bárhol, ahol egy utasítás állhat, szerepelhet összetett utasítás (blokk) is. A blokk formailag két részre osztható. Lehet deklarációs és blokkra lokális adatokat defininiáló része, valamint utasításokat tartalmazó része. Ez utóbbiba újabb alblokkok épülhetnek.