OPERAATTORIT
SIJOITUS-OPERAATTORI
Sijoituslauseet, joissa käytetään sijoitusoperaattorina = -merkkiä kirjoitetaan muodossa:tunniste = ilmaus;
Esimerkissä (yllä), määritellään aluksi kokonaislukumuuttujat numero ja luku. Seuraavaksi numero -muuttujaan sijoitetaan 21 ja luku -muuttujaan sijoitetaan numero -muuttujassa oleva arvo, jolloin luku -muuttujassakin on arvona 21. Sijoituslauseessa tunniste esittää tavallisesti muuttujaa ja ilmaus esittää vakiota, muuttujaa tai jotain monimutkaisempaa ilmausta esim. funktion kutsua.int numero, luku; numero = 21; luku = numero;
ARITMEETTISET-OPERAATTORIT
C-kielessä on käytössä viisi aritmeettista operaattoria:Merkki | Selite |
---|---|
+ | Yhteenlasku |
- | Vähennyslasku |
* | Kertolasku |
/ | Jakolasku |
% | Jakojäännös, vain kokonaisluvuille |
Esimerkissä (alla), pyydetään kaksi lukua ja niille tehdään yllä olevat aritmeettiset-laskutoimitukset. Jakojäännös ei toimi kaikilla kääntäjillä, DevC++ kääntäjllä jakojäännös saadaan fmod() -funktion avulla (esimerkki täällä).
/* Aritmeettiset-operaatiot */ #include <stdio.h> int main() { float luku1, luku2, tulos; printf("Anna luku: "); scanf("%f", &luku1); printf("Anna luku: "); scanf("%f", &luku2); /*laskutoimitukset*/ tulos = luku1 + luku2; printf("Summa %f \n", tulos); tulos = luku1 - luku2; printf("Erotus %f \n", tulos); tulos = luku1 * luku2; printf("Tulo %f \n", tulos); tulos = luku1 / luku2; printf("Osamaara %f \n", tulos); //tulos=luku1 % luku2; // printf("Jakojäännös %f \n", tulos); getch(); return 0; }
VERTAILU-OPERAATTORIT
Vertailuoperaattorit vertaavat kahta arvoa keskenään. Vertailuoperaattoreita käytetään usein valintoja tekevässä rakenteissa sekä toistorakenteissa. Esimerkiksi; onko luku suurempi kuin 100 tai onko luku1 suurempi tai yhtäsuuri kuin luku2. Paremmin vertailuoperaattorien käyttö selviää oppaan kohdista Valintojen ohjelmointi ja Toistolauseet.C-kielen vertailuoperaattorit:
Merkki | Selite |
---|---|
< | Pienempi kuin |
> | Suurempi kuin |
= = | Yhtäsuuri kuin |
!= | Erisuuri kuin |
<= | Pienempi tai yhtäsuuri kuin |
>= | Suurempi tai yhtäsuuri kuin |
Esimerkkiohjelmaassa (alla), vertailu-operaatiot tehdään printf-funktioissa.
/* vertailuoperaattorit */ #include <stdio.h> int main() { int i=9; printf("Kun i on 9, niin:\n\n"); printf("i < 5 on %d\n", i =< 5); /* false */ printf("i > 4 on %d\n", i > 4); /* true */ printf("i == 9 on %d\n", i == 9); /* true */ printf("i != 8 on %d\n", i != 8); /* true */ printf("i < = 7 on %d\n", i <= 7); /* false */ printf("i >= 6 on %d\n", i >= 6); /* false */ getch(); return 0; }
UNAARISET-OPERAATTORIT
(muuttujan arvon kasvatus tai vähennys)
Unaariset-operaattorit tarkoittavat muuttujan arvon kasvattamista numerolla 1 tai vähentämistä numerolla 1. Unaariset-operaattorit ovat inkrementointi- (lisäys) ja
dekrementointioperaattorit (vähennys).
Esim.
Operaattorin ollessa ennen operandia, operandin arvo muuttuu ennen operandin käsittelyä komentolauseessa. Mikäli operaattori on operandin jälkeen, operandin arvoa muutetaan sen jälkeen, kun operandin suhteen on suoritettu komentolauseen mukaiset toimenpiteet. Unaarisia-operaattoreita käytetään usein toistolauseissa, esimerkiksi for-toistolauseessa.int i, j; i = 0; j = 0; ++i; /*vastaa seuraavaa i = i + 1; */ j++; --i; /*vastaa seuraavaa i = i - 1; */ j--;
/* vähennysoperaattorin käyttö */ #include <stdio.h> int main() { int arvo = 10; printf(”arvo = %d\n”, arvo); printf(”arvo = %d\n”, --arvo); printf(”arvo = %d\n”, arvo); printf(”arvo = %d\n”, arvo--); printf(”arvo = %d\n”, arvo); getch(); return 0; }
Unaarisia-operaattoreita käytetään usein toistolauseissa, esimerkiksi for-lauseessa.
LOOGISET-OPERAATTORIT
Ohjelmoinnissa loogiset-operaatiot toimivat samalla periaatteella kuin elektroniikan puolella. Esimerkiksi, tutkitaan kahden muuttujan arvoa joiden perusteella ratkaistaan tehdäänkö seuraava komento.Loogisia-operaattoreita käytetään esimerkiksi if-lauseiden yhteydessä testatessa erilaisia ehtoja.
Esimerkki.
C-kieli sisältää kolme loogista operaattoria:/* jos tulos on suurempikuin 10 JA tulos on pienempikuin 10*/ if (tulos > 10 && tulos < 20)
Merkki | Selite (eng) | Selite |
---|---|---|
&& | AND | JA, jos molemmat ilmaukset on tosia |
|| | OR | TAI, jos jompikumpi ilmauksista on tosi |
! | NOT | Kääntää ilmauksen ehdon |
Operaattorin ollessa ennen operandia, operandin arvo muuttuu ennen operandin käsittelyä komentolauseessa. Mikäli operaattori on operandin jälkeen, operandin arvoa muutetaan sen jälkeen, kun operandin suhteen on suoritettu komentolauseen mukaiset toimenpiteet.
/* loogisten operaattorien käyttö */ #include <stdio.h> int main() { int a, b; a = 1; b = 2; printf(”Alkuarvot ovat:\n”); printf(”a = %d\nb = %d\n\n”, a, b); printf(”Testit\n”); printf(”a == 1 on %d\n”, a == 1); /* true */ printf(”b != 1 on %d\n”, b != 1); /* true */ printf(”Siksi (a == 1) && (b != 1) on %d\n”, (a == 1) && (b != 1)); /* true */ getch(); return 0; }
SUORITUSJÄRJESTYS
C-kielessä on operaattoreilla suoritusjärjestys. Operaattorit, joilla on korkein suoritusoikeus ovat listan alussa. Alhaisemman suoritusoikeuden omaavat operaattorit ovat listassa alempana. Sitovuus määrää laskemissuunnan. Esim. sijoitusoperaattorin (=) suhteen sitovuus oikealta vasemmalle tarkoittaa sitä, että oikealla oleva lauseke sijoitetaan vasemmalla olevaan muuttujaan.Operaattorien suoritusjärjestys:
Operaattorityyppi | Operaattori | Sitovuus |
---|---|---|
Unaarinen | --, ++ | ov |
Looginen NOT | ! | ov |
Kertominen, jakaminen | *, /, % | vo |
Yhteen-, vähennyslasku | +, - | vo |
Vertailu | <, <=, >, >= | vo |
Vertailu | = =, != | vo |
Looginen AND | && | vo |
Looginen OR | || | vo |
Sijoitus | = | ov |
Sulkumerkeillä voidaan operaattorien suoritusjärjestystä muuttaa !