Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.

Podobne prezentacje


Prezentacja na temat: "Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła."— Zapis prezentacji:

1 Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka

2 Jednoargumentowe operatory arytmetyczne
18 17 ++ -- POST 16 ++ -- PRE + - 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Operatory znaku: + - a=+3; b=-5; Operatory inkrementacji i dekrementacji: wersja przedrostowa ++a; --b; wersja przyrostkowa a++; b--;

3 Jednoargumentowe operatory arytmetyczne
#include<iostream> using namespace std; int main() { int a=5,b=5,c=5,d=5; cout<<++a<<"\t"<<a<<endl; cout<<b++<<"\t"<<b<<endl; cout<<--c<<"\t"<<c<<endl; cout<<d--<<"\t"<<d<<endl; } 6 6 5 6 4 4 5 4

4 Dwuargumentowe operatory arytmetyczne
18 17 ++ -- POST 16 ++ -- PRE + - 15 14 * / % 13 + - 12 11 10 9 8 7 6 5 4 3 2 1 Dodawanie + Odejmowanie - Mnożenie * Dzielenie / Reszta z dzielenia % Reszta z dzielenia działa tylko na typach całkowitych!

5 Operatory przypisania
18 17 ++ -- POST 16 ++ -- PRE + - 15 14 * / % 13 + - 12 11 10 9 8 7 6 5 4 3 = *= /= %= += -= <<= >>= &= |= ^= 2 1 Jest ich 11 = *= /= %= += -= <<= >>= &= |= ^= a+=2; oznacza a=a+2; Nie każdy obiekt może stać po lewej stronie operatora przypisania. Te, które mogą nazywa się l-wartościami. l-wartość = r-wartość; 2=a; - błąd 2 nie jest l-wartością!

6 = *= /= %= += -= <<= >>= &= |= ^=
Operatory logiczne 18 17 ++ -- POST 16 ++ -- PRE + - ! 15 14 * / % 13 + - 12 11 < <= > >= 10 == != 9 8 7 6 && 5 || 4 3 = *= /= %= += -= <<= >>= &= |= ^= 2 1 Zwracają wartości typu bool. Operator: równy == różny != mniejszy < większy > mniejszy lub równy <= większy lub równy >= sumy logicznej || iloczynu logicznego && negacji !

7 Iloczyn logiczny: && Suma logiczna: || Negacja logiczna: !
Operatory logiczne Iloczyn logiczny: && Suma logiczna: || Negacja logiczna: ! p q p && q false true p q p || q false true p !p false true

8 Operatory logiczne int a=5; if (a>=4 && a<10 || a==0) { … } bool koniec = false; while (!koniec)

9 = *= /= %= += -= <<= >>= &= |= ^=
Operatory bitowe 18 17 ++ -- POST 16 ++ -- PRE + - ! ~ 15 14 * / % 13 + - 12 << >> 11 < <= > >= 10 == != 9 & 8 ^ 7 | 6 && 5 || 4 3 = *= /= %= += -= <<= >>= &= |= ^= 2 1 iloczyn bitowy & suma bitowa | bitowa różnica symetryczna ^ negacja bitowa ~ przesunięcie bitowe w lewo << przesunięcie bitowe w prawo >> Działają tylko na typach całkowitych!

10 Operatory bitowe (& | ^ ~)
Iloczyn bitowy Suma bitowa Bitowa różnica symetryczna Negacja bitowa 1 & 1 | 1 ^ ~ 1 32 bity (dla int)

11 Operatory bitowe int main() { int a = 10, b = 6; cout << (a&b) << endl; cout << (a|b) << endl; cout << (a^b) << endl; cout << ~a << endl; system("pause"); return 0; } 2 14 12 -11

12 Operatory bitowe (<< >>)
Operator przesunięcia bitowego w lewo zmienna << ile_miejsc bitowego w prawo zmienna >> ile_miejsc 1 1 ? 1 ? 1 32 bity (dla int)

13 hex – liczba wypisywana jest w systemie szesnastkowym
Operatory bitowe #include<iostream> using namespace std; int main() { short int a=0x00ff,b=0xff00,c,d,e,f,g,h; c=~a; d=a>>2; e=a<<2; f=a&b; g=a^b; h=a|b; cout<<hex<<a<<endl; cout<<hex<<b<<endl; cout<<hex<<c<<endl; cout<<hex<<d<<endl; cout<<hex<<e<<endl; cout<<hex<<f<<endl; cout<<hex<<g<<endl; cout<<hex<<h<<endl; } ff ff00 ff00 3f 3fc ffff ffff hex – liczba wypisywana jest w systemie szesnastkowym

14 Operatory przesunięcia bitowego
Operatory << oraz >> zostały przeładowane w ten sposób, że odpowiadają za wstawianie i wyjmowanie ze strumienia. int a; cin>>a; cout<<a; bool a = true, b = false; cout << a && b; cout << (a && b); cout << a && b; jest równoznaczne ((cout << a) && b); cout << (a && b); jest równoznaczne (cout << (a && b)); 1

15 Operatory logiczne a operatory bitowe
int main() { int a=5; if (a>3 && a<7) cout<<"TRUE"<<endl; else cout<<"FALSE"<<endl; } int main() { int a=5; if (a>3 & a<7) cout<<"TRUE"<<endl; else cout<<"FALSE"<<endl; } TO SAMO TRUE TRUE

16 Operatory logiczne a operatory bitowe
int main() { int a=1,b=2; if (a && b) cout<<"TRUE"<<endl; else cout<<"FALSE"<<endl; } int main() { int a=1,b=2; if (a & b) cout<<"TRUE"<<endl; else cout<<"FALSE"<<endl; } b=3 TRUE TRUE FALSE

17 = *= /= %= += -= <<= >>= &= |= ^=
Wyrażenie warunkowe ? : 18 17 ++ -- POST 16 ++ -- PRE + - ! ~ 15 14 * / % 13 + - 12 << >> 11 < <= > >= 10 == != 9 & 8 ^ 7 | 6 && 5 || 4 ? : 3 = *= /= %= += -= <<= >>= &= |= ^= 2 1 Jest to wyrażenie, którego wartość jest zależna od wartości wyrażenia stojącego przed znakiem ? c = w ? a : b; Jeżeli w jest prawdziwe to c = a jeżeli nie to c = b

18 Równoznaczne instrukcji if
Wyrażenie warunkowe #include<iostream> using namespace std; int main() { int a=1, b=2,c,d; if (a>b) c=a; else c=b; d = a > b ? a : b; cout << c << endl << d << endl; } Równoznaczne instrukcji if

19 = *= /= %= += -= <<= >>= &= |= ^=
Operator przecinek 18 17 ++ -- POST 16 ++ -- PRE + - ! ~ 15 14 * / % 13 + - 12 << >> 11 < <= > >= 10 == != 9 & 8 ^ 7 | 6 && 5 || 4 ? : 3 = *= /= %= += -= <<= >>= &= |= ^= 2 1 , Wyrażenie składające się z kilku wyrażeń oddzielonych od siebie operatorem , przyjmuje wartość wyrażenia będącego najbardziej z prawej, np. wyrażenie: a , b; ma wartość równą b.

20 Operator przecinek Operator , ma najniższy priorytet (niższy od operatorów przypisania). Dlatego: a = (b , c); odpowiada a = c; ale a = b , c; a = b; Stosujemy go np. w sytuacji: for (int i = 0, j = 4; i < 4 && j>0; i++ , j--)

21 Łączność operatorów Operatory jednoargumentowe są prawostronnie łączne, np.: (!a) Operatory dwuargumentowe są lewostronnie łączne (wyjątek: operatory przypisania), np.: (((a+b)+c)+d) ale (a=(b=(c=d)))

22 Przykład 1 int i=0, j=3; while(i<3 || j>-1) { cout<<i<<'\t'<<j<<endl; ++i; --j; } 0 3 1 2 2 1 3 0

23 Przykład 1 c.d. int i=0, j=3, ile_i=0, ile_j=0; while((++ile_i, i<3) || (++ile_j, j>-1)) { cout<<i<<'\t'<<j<<endl; ++i; --j; } cout<<endl<<ile_i<<'\t'<<ile_j<<endl; 0 3 1 2 2 1 3 0 5 2

24 Przykład 2 int i=0, j=3, ile_i=0, ile_j=0; while((++ile_i, i<3) && (++ile_j, j>-1)) { cout<<i<<'\t'<<j<<endl; ++i; --j; } cout<<endl<<ile_i<<'\t'<<ile_j<<endl; 0 3 1 2 2 1 4 3

25 a = 6 b = 2 c = 4 Przykład 3 #include<iostream>
using namespace std; int main() { int a,b,c; a=2+2*2; b=3%2+1; c=4/2*2; } 14 * / % 13 + - 3 = a = 6 b = 2 c = 4

26 a = 3 b = 4 c = 5 d = 5 BŁĄD BŁĄD g = 5 h = 5 Przykład 4
#include<iostream> using namespace std; int main(){ int a,b,c,d; a = 1 ? 2,3 : 4,5; b = 0 ? 2,3 : 4,5; c = (1 ? 2,3 : 4,5); d = (0 ? 2,3 : 4,5); int e = 1 ? 2,3 : 4,5; int f = 0 ? 2,3 : 4,5; int g = (1 ? 2,3 : 4,5); int h = (0 ? 2,3 : 4,5); } 4 ? : 3 = 1 , a = 3 b = 4 c = 5 d = 5 BŁĄD BŁĄD g = 5 h = 5

27 a = 5 b = 9 c = 5 d = 9 e = 5 f = 9 g = 5 h = 9 Przykład 4 c.d.
#include<iostream> using namespace std; int main(){ int a,b,c,d; a = 1 ? 2+3 : 4+5; b = 0 ? 2+3 : 4+5; c = (1 ? 2+3 : 4+5); d = (0 ? 2+3 : 4+5); int e = 1 ? 2+3 : 4+5; int f = 0 ? 2+3 : 4+5; int g = (1 ? 2+3 : 4+5); int h = (0 ? 2+3 : 4+5); } 13 + 4 ? : 3 = a = 5 b = 9 c = 5 d = 9 e = 5 f = 9 g = 5 h = 9

28 = *= /= %= += -= <<= >>= &= |= ^=
Przykład 5 #include<iostream> using namespace std; int main() { int a=2,b=1; a*=b+=2; } 3 = *= /= %= += -= <<= >>= &= |= ^= a = 6 b = 3

29 #include<iostream> using namespace std; int main() {
Przykład 6 #include<iostream> using namespace std; int main() { short int a=0x1234, b, c; b=!a; c=~a; } a = 1234 b = 0 c = edcb

30 Przykład 7 #include<iostream> using namespace std; int main() { char z; if (1==4>=3) z='T'; else z='F'; } 11 < <= > >= 10 == != z = 'T'

31 Przykład 8 #include<iostream> using namespace std; int main() { int cout=2; std::cout<<cout<<cout<<endl; std::cout<<(cout<<cout)<<endl; } 22 8

32 Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie:


Pobierz ppt "Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła."

Podobne prezentacje


Reklamy Google