Download - c++ programiranje
// my first program in C++#include
int main(){std::cout >=, 6)), c++ samo procjenjuje da li je 5==5 istina , ako jeste nikada ne provjerava da li je (3>6)) istina, ovo se zove procjena uskog grla.
operatorshort-circuit(usko grlo)
&&Ako je izraz na lijevo strani laz(false),kombinovani rezultat je laz(false), desna strana se ne procjenjuje.
||.Ako je izraz na lijevo strani istina(true),kombinovani rezultat je istina(true), desna strana se ne procjenjuje.
Ovo je veoma bitno kada izraz na desnoj strani ima popratne efekte, kao sto je mjenjanje vrijednosti.
if ( (ib ? a : b // evaluates to whichever is greater, a or b.
Na primjer
a=2;b=7;c = (a>b) ? a : b; rezultat je 7, u ovom primjeru a je 2, b je 7, a izraz koji je procjenjen je bio neistina jer a nije > od b,tako da je prva vrijednost nakon ? Odbacena u korist druge vrijednost tj vrijednosti b.
Zarez operator(,)
Operator zarez se koristi da razdvoji dvije ili vise izraza gdje
je jedan izraz ocekivan.Kada se set izraza mora procjeniti samo se
desni izraz uzima.
Npr sljedeci kod:a = (b=3,b+2);
Bi prvo dodao vrijednost 3 varijabli b, a onda bi dodao b+2
varijabli a, tako da bi na kraju varijabla a imala 5 dodatu sebi,
dok bi varijabla b imala vrijednost 3.
Bitwise operatori( &, |, ^, ~, )
Bitwise operatori modifikuju varijable sa obzirom na bit(dio memorije) koji predstavljaju vrijednost koju oni pohranjuju.operatorasm equivalentdescription
&ANDBitwise AND
|ORBitwise inclusive OR
^XORBitwise exclusive OR
~NOTUnary complement (bit inversion)
SHRShift bits right
Operator eksplicitnog rasporednjivanja uloga
Operatori eksplicitnog rasporednjivanja uloga omogucuju pretvaranje vrijednosti datog tipa u drugi tip(float u int itd).Postoji nekoliko nacina za ovo, a najjednostavniji je da se prije izraza koji ce se pretvarati stavi novi tip u zagrade tj ().
123int i;float f = 3.14;i = (int) f;
Predhodni kod pretvara float broj 3.14 u integralnu vrijednost 3.
ostatak je izgubljen.Ovdje operator dodjele je int.Jos jedan nacin
je da se izraz koji se pretvara stavi u zagrade a prije njega upise
novi tip.i = int(f);
SizeofOvaj operator prihvata jedan parametar, koji moze biti tip
ili varijabla, i vraca velicinu tog tipa ili objekta u
bitovima(velicini te varijable, podatka kada se sprema u
memoriju)
x = sizeof(char);
Ovdje je varijabli x dodjeljenja vrijednost 1, jer je char tip
vrijednosti 1 bita.
Vrijednost koju sizeof vraca je sastavna vremensa konstanta i uvjek
se odredjuje prije izvedbe programa.Postoji jos nekoliko operatora
o kojima ce biti kasnije rijeci.
Prijoritet izvedbe operatora
Jedan izraz moze imati vise operatora npr x = 5 + 7 % 2;U izrazu iznad vrijednost 6 je dodata varijabli x zato sto % operator ima veci prijoritet nego + operator, i uvjek se izvodi prije, djelovi izraza se mogu staviti u zagrade da se prevazidje ovaj prijoritet, ili da se navede jasna namjera.Uocite razliku12x = 5 + (7 % 2); // x = 6 (same as without parenthesis)x = (5 + 7) % 2; // x = 0
Od najveceg do najmanjeg prijoriteta c++ operatori se odredjuju
prema ovome redu:
LevelPrecedence groupOperatorDescriptionGrouping
1Scope::scope qualifierLeft-to-right
2Postfix (unary)++ --postfix increment / decrementLeft-to-right
()functional forms
[]subscript
. ->member access
3Prefix (unary)++ --prefix increment / decrementRight-to-left
~ !bitwise NOT / logical NOT
+ -unary prefix
& *reference / dereference
new deleteallocation / deallocation
sizeofparameter pack
(type)C-style type-casting
4Pointer-to-member.* ->*access pointerLeft-to-right
5Arithmetic: scaling* / %multiply, divide, moduloLeft-to-right
6Arithmetic: addition+ -addition, subtractionLeft-to-right
7Bitwise shift>shift left, shift rightLeft-to-right
8Relational< > =comparison operatorsLeft-to-right
9Equality== !=equality / inequalityLeft-to-right
10And&bitwise ANDLeft-to-right
11Exclusive or^bitwise XORLeft-to-right
12Inclusive or|bitwise ORLeft-to-right
13Conjunction&&logical ANDLeft-to-right
14Disjunction||logical ORLeft-to-right
15Assignment-level expressions= *= /= %= += -=
>>=