Omistamine
( = ) Omistusoperaatorid kasutatakse muutujale väärtuse andmiseks: a = 10; Sellise lause abil omistatakse muutujale a väärtus 10. Pane tähe, et omistuslauses on muutuja alati vasakpoolne, omistatav väärtus aga parempoolne. Omistuslause töötab alati paremalt vasakule (ehk siis paremalpool olev väärtus omistatakse vasakpoolsele muutujale). Vaatleme järgmist näidet: a = b; Sellisel juhul omistatakse muutuja b väärtus muutujale a. Pane tähele - muutub vaid muutuja a väärtus, muutuja b väärtus jääb samaks, mis ta oli enne omistuslauset. int a, b; //a ja b väärtused ei ole teada a = 7; //a väärtus on 7, b väärtus ei ole teada b = 5; //a väärtus on 7, b väärtus on 5 a = b; // a väärtus on 5, b väärtus on 5 b = 13; // a väärtus on 5, b väärtus on 13 Võimalike kasutusviidide näited:
Aritmeetilised tehted +
liitmine
Kombineeritud
omistuslaused- lahutamine * korrutamine / jagamine % mooduljagamine Ülaltoodutest vaja selgitamist ilmselt vaid muuduljagamine. Vaatleme seda näite varal: a = 17%5; sellise tehte tulemusena saab a väärtuseks 2 kuna arvude 17 ja 5 jagamisel tekib vastus 3 jääk 2 (seesama jääk saabki mooduljagamisel a väärtuseks) Mõned
näited:
Sama kehtib ka
kõigi teiste operaatorite kohta.
Inkrement ja dekrement Ehk suurendamise tehe
(++)
ja vähendamise tehe (--).
a++;
a = a+1; a += 1; Toodud tehted tähendavad kõik ühte ja sama - a väärtust suurendatakse ühe võrra. Suurendamise tehe (++) võib asuda enne muutujat (++a) või peale seda (a++). Erinevus seisneb järgmises:
Esimesel juhul suurendatakse b väärtust ja omistatakse saadud väärtus seejärel muutujale a. Teisel juhul aga omistatakse b väärtus muutujale a ning suurendatakse b väärtust alles peale omistustehet.
a--;
a = a-1; a -= 1; Toodud tehted tähendavad kõik ühte ja sama - a väärtust vähendatakse ühe võrra. Vähendamise tehte (--) asukoht enne muutujat (--a) või peale seda (a--) on analoogiline sama olukorraga inkremendi puhul.
Loe
lähemalt bititehete kohta näiteks:
The GNU C Programming Tutorial - Bitwise operators http://crasseux.com/books/ctutorial/Bitwise-operators.html#Bitwise%20operators Tingimustehe ? Avaldis, mis koosneb tingimusest ja kahest tegevusest: tingimus ? tegevus1 : tegevus2 Kui tingimus on tõene, täidetakse tegevus1, kui tingimus on mittetõene, täidetakse tegevus2 Näiteks: a>b ? a : b Tagastab a juhul, kui a on suurem kui b ning tagastab b juhul, kui a ei ole suurem kui b. Funktsionaalselt sarnane valikulausega if, nendevaheline erinevus seisneb selles, et tingimustehet on võimalik kasutada ka avaldiste sees, isegi sellistes kohtades kus selle kasutamine tundub ootamatu ning if-lause kasutamine ei ole lubatud. Näide: (allikas: Teodor Luczkowski. Baasteadmised
programmeerimiskeelest C++)
Järgmine koodilõik väljastab isikukoodi alusel tema soo (paarisarvuga algavad isikukoodid kuuluvad naistele). Kümnekohaline isikukood ei pruugi mahtuda 4-baidisesse täisarvu, seetõttu on ta kirjeldatud märgimassiivina ja esimese arvukoha leidmiseks kasutatakse märgikoodide lahutamist: char ikood[11]; printf("Sisesta isikukood > "); scanf("%s", ikood); printf("Sugu: %c\n",(ikood[0]-'0')%2 ? 'M' : 'N'); Tehete prioriteedid Tehete prioriteedist C-keeles saad põhjaliku ülevaate näiteks: The GNU C Programming Tutorial - Precedence of operators http://crasseux.com/books/ctutorial/Precedence-of-operators.html |