Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21
Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 2 / 21
Zmienne Zmienna to nazwa komórki pamięci, używanej do przechowywania wartości, które program może modyfikować. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 3 / 21
Zmienne Zmienna to nazwa komórki pamięci, używanej do przechowywania wartości, które program może modyfikować. Charakterystyka zmiennej: (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 3 / 21
Zmienne Zmienna to nazwa komórki pamięci, używanej do przechowywania wartości, które program może modyfikować. Charakterystyka zmiennej: 1 typ - określa jakiego rodzaju wartości dana zmienna może przechowywać. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 3 / 21
Zmienne Zmienna to nazwa komórki pamięci, używanej do przechowywania wartości, które program może modyfikować. Charakterystyka zmiennej: 1 typ - określa jakiego rodzaju wartości dana zmienna może przechowywać. 2 nazwa - identyfikator. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 3 / 21
Zmienne Zmienna to nazwa komórki pamięci, używanej do przechowywania wartości, które program może modyfikować. Charakterystyka zmiennej: 1 typ - określa jakiego rodzaju wartości dana zmienna może przechowywać. 2 nazwa - identyfikator. 3 wartość - modyfikowalna informacja określonego typu. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 3 / 21
Zmienne Zmienna to nazwa komórki pamięci, używanej do przechowywania wartości, które program może modyfikować. Charakterystyka zmiennej: 1 typ - określa jakiego rodzaju wartości dana zmienna może przechowywać. 2 nazwa - identyfikator. 3 wartość - modyfikowalna informacja określonego typu. Zmienna musi być zadeklarowana przed użyciem. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 3 / 21
Zmienne Zmienna to nazwa komórki pamięci, używanej do przechowywania wartości, które program może modyfikować. Charakterystyka zmiennej: 1 typ - określa jakiego rodzaju wartości dana zmienna może przechowywać. 2 nazwa - identyfikator. 3 wartość - modyfikowalna informacja określonego typu. Zmienna musi być zadeklarowana przed użyciem. W języku C nazwa zmiennej nie musi mieć nic wspólnego z jej typem. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 3 / 21
Zmienne Zmienna to nazwa komórki pamięci, używanej do przechowywania wartości, które program może modyfikować. Charakterystyka zmiennej: 1 typ - określa jakiego rodzaju wartości dana zmienna może przechowywać. 2 nazwa - identyfikator. 3 wartość - modyfikowalna informacja określonego typu. Zmienna musi być zadeklarowana przed użyciem. W języku C nazwa zmiennej nie musi mieć nic wspólnego z jej typem. Deklaracje zmiennych: typ listazmiennych; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 3 / 21
Zmienne Zmienna to nazwa komórki pamięci, używanej do przechowywania wartości, które program może modyfikować. Charakterystyka zmiennej: 1 typ - określa jakiego rodzaju wartości dana zmienna może przechowywać. 2 nazwa - identyfikator. 3 wartość - modyfikowalna informacja określonego typu. Zmienna musi być zadeklarowana przed użyciem. W języku C nazwa zmiennej nie musi mieć nic wspólnego z jej typem. Deklaracje zmiennych: typ listazmiennych; int i, j, k; double x; float xyz; void abc; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 3 / 21
Zmienne Deklaracje zmiennych umieszcza się w jednym z 3 podstawowych miejsc: (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 4 / 21
Zmienne Deklaracje zmiennych umieszcza się w jednym z 3 podstawowych miejsc: 1 wewnątrz funkcji zmienne lokalne, (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 4 / 21
Zmienne Deklaracje zmiennych umieszcza się w jednym z 3 podstawowych miejsc: 1 wewnątrz funkcji zmienne lokalne, 2 w definicji parametrów funkcji parametry formalne, (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 4 / 21
Zmienne Deklaracje zmiennych umieszcza się w jednym z 3 podstawowych miejsc: 1 wewnątrz funkcji zmienne lokalne, 2 w definicji parametrów funkcji parametry formalne, 3 poza wszelkimi funkcjami zmienne globalne (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 4 / 21
Zmienne Deklaracje zmiennych umieszcza się w jednym z 3 podstawowych miejsc: 1 wewnątrz funkcji zmienne lokalne, 2 w definicji parametrów funkcji parametry formalne, 3 poza wszelkimi funkcjami zmienne globalne Zmienne lokalne czasami określane jako zmienne automatyczne. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 4 / 21
Zmienne Deklaracje zmiennych umieszcza się w jednym z 3 podstawowych miejsc: 1 wewnątrz funkcji zmienne lokalne, 2 w definicji parametrów funkcji parametry formalne, 3 poza wszelkimi funkcjami zmienne globalne Zmienne lokalne czasami określane jako zmienne automatyczne. Słowo kluczowe auto deklaruje zmienne jako automatyczne - praktycznie nie używane - ponieważ wszystkie nieglobalne zmienne są domyślenie automatyczne w C89. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 4 / 21
Zmienne Deklaracje zmiennych umieszcza się w jednym z 3 podstawowych miejsc: 1 wewnątrz funkcji zmienne lokalne, 2 w definicji parametrów funkcji parametry formalne, 3 poza wszelkimi funkcjami zmienne globalne Zmienne lokalne czasami określane jako zmienne automatyczne. Słowo kluczowe auto deklaruje zmienne jako automatyczne - praktycznie nie używane - ponieważ wszystkie nieglobalne zmienne są domyślenie automatyczne w C89. Ze zmiennych lokalnych mogą korzystać tylko instrukcje znajdujące się w tym samym bloku, w którym znajduje się deklaracja zmiennej. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 4 / 21
Zmienne Deklaracje zmiennych umieszcza się w jednym z 3 podstawowych miejsc: 1 wewnątrz funkcji zmienne lokalne, 2 w definicji parametrów funkcji parametry formalne, 3 poza wszelkimi funkcjami zmienne globalne Zmienne lokalne czasami określane jako zmienne automatyczne. Słowo kluczowe auto deklaruje zmienne jako automatyczne - praktycznie nie używane - ponieważ wszystkie nieglobalne zmienne są domyślenie automatyczne w C89. Ze zmiennych lokalnych mogą korzystać tylko instrukcje znajdujące się w tym samym bloku, w którym znajduje się deklaracja zmiennej. Zmienne lokalne istnieją tylko w czasie wykonywania bloku kodu, w którym zostały zadeklarowane. Są tworzone po przekazaniu sterowania do bloku, w którym zostały zdeklarowane i niszczone, gdy sterowanie go opuszcza. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 4 / 21
Zmienne Deklaracje zmiennych umieszcza się w jednym z 3 podstawowych miejsc: 1 wewnątrz funkcji zmienne lokalne, 2 w definicji parametrów funkcji parametry formalne, 3 poza wszelkimi funkcjami zmienne globalne Zmienne lokalne czasami określane jako zmienne automatyczne. Słowo kluczowe auto deklaruje zmienne jako automatyczne - praktycznie nie używane - ponieważ wszystkie nieglobalne zmienne są domyślenie automatyczne w C89. Ze zmiennych lokalnych mogą korzystać tylko instrukcje znajdujące się w tym samym bloku, w którym znajduje się deklaracja zmiennej. Zmienne lokalne istnieją tylko w czasie wykonywania bloku kodu, w którym zostały zadeklarowane. Są tworzone po przekazaniu sterowania do bloku, w którym zostały zdeklarowane i niszczone, gdy sterowanie go opuszcza. Zmienne utworzone w jednym bloku nie mają wpływu na zmienne o tej samej nazwie zadeklarowane w innym bloku kodu. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 4 / 21
Zmienne lokalne int main ( void ){ // fragment kodu { int x; x = 10; } // fragment kodu { int x; x = -199; } // fragment kodu return 0; } (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 5 / 21
Wypisywanie zmiennych lokalnych # include <stdio.h> int main ( void ){ int x = 10; char fx = a, zz = 68; printf ("x=%d\n", x); printf ("fx =%c, zz =%d, zz =%c, \n",fx, zz, zz); } return 0; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 6 / 21
Wypisywanie zmiennych lokalnych # include <stdio.h> int main ( void ){ int x = 10; char fx = a, zz = 68; printf ("x=%d\n", x); printf ("fx =%c, zz =%d, zz =%c, \n",fx, zz, zz); } return 0; x = 10 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 6 / 21
Wypisywanie zmiennych lokalnych # include <stdio.h> int main ( void ){ int x = 10; char fx = a, zz = 68; printf ("x=%d\n", x); printf ("fx =%c, zz =%d, zz =%c, \n",fx, zz, zz); } return 0; x = 10 fx = a, zz=68, zz=d, (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 6 / 21
Wypisywanie zmienne lokalnych # include <stdio.h> int main ( void ){ float m = 12. 12; double w = 231.878828228; printf ("m=%f\n", m); printf ("w = %lf, w = %0. lf, w = %.3 lf, w = %.4 lf\n", w, w, w, w); } return 0; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 7 / 21
Wypisywanie zmienne lokalnych # include <stdio.h> int main ( void ){ float m = 12. 12; double w = 231.878828228; printf ("m=%f\n", m); printf ("w = %lf, w = %0. lf, w = %.3 lf, w = %.4 lf\n", w, w, w, w); } return 0; m=12.120000 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 7 / 21
Wypisywanie zmienne lokalnych # include <stdio.h> int main ( void ){ float m = 12. 12; double w = 231.878828228; printf ("m=%f\n", m); printf ("w = %lf, w = %0. lf, w = %.3 lf, w = %.4 lf\n", w, w, w, w); } return 0; m=12.120000 w = 231.878828, w = 232, w=231.879, w=231.8788 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 7 / 21
Zmienne lokalne # include <stdio.h> int main ( void ){ int t; scanf ("%d", &t); if (1== t){ double nmbr ; /* tworzona tylko przy wejsciu do tego bloku kodu */ printf (" Podaj liczbe :"); scanf ("%lf", & nmbr ); // fragment kodu } /* Zmienna nmbr tutaj nieznana */ // fragment kodu } return 0; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 8 / 21
Zmienne lokalne # include <stdio.h> int main ( void ){ float x; scanf ("%f", &x); if (x < 10) { float x; /* Zmienna x przeslania zmienna x z zewnetrznego bloku */ printf (" Wewnetrzna przed "=", x: %f\n", x); x = 36. 6; printf (" Wewnetrzna po "=", x: %f\n", x); } printf (" Zewnetrzna x: %f\n", x); return 0; } gcc program1.c -Wall warning: x may be used uninitialized in this function [-Wmaybe-uninitialized] (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 9 / 21
Zmienne lokalne /* Funkcja f jest bledna w C89, ale poprawna w C99, C11 lub gnu99, gnu11 */ void f( void ){ int i; i = 10; /* ten wiersz spowoduje blad */ int j; j = 20; } W C89 należy deklarować zmienne lokalne na początku bloku, w którym są definiowane, przed wszelkimi innymi instrukcjami. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 10 / 21
Zmienne lokalne Przy wywoływaniu funkcji powstają jej zmienne lokalne, a gdy funkcja kończy działanie, zmienne lokalne przestają istnieć. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 11 / 21
Zmienne lokalne Przy wywoływaniu funkcji powstają jej zmienne lokalne, a gdy funkcja kończy działanie, zmienne lokalne przestają istnieć. Zmienne lokalne nie zachowują swoich wartości pomiędzy kolejnymi wywołaniami funkcji, o ile nie zostały zadeklarowane jako zmienne statyczne, przy pomocy modyfikatora static. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 11 / 21
Zmienne lokalne Przy wywoływaniu funkcji powstają jej zmienne lokalne, a gdy funkcja kończy działanie, zmienne lokalne przestają istnieć. Zmienne lokalne nie zachowują swoich wartości pomiędzy kolejnymi wywołaniami funkcji, o ile nie zostały zadeklarowane jako zmienne statyczne, przy pomocy modyfikatora static. Parametry formalne funkcji zachowują się jak zmienne lokalne. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 11 / 21
Zmienne lokalne Przy wywoływaniu funkcji powstają jej zmienne lokalne, a gdy funkcja kończy działanie, zmienne lokalne przestają istnieć. Zmienne lokalne nie zachowują swoich wartości pomiędzy kolejnymi wywołaniami funkcji, o ile nie zostały zadeklarowane jako zmienne statyczne, przy pomocy modyfikatora static. Parametry formalne funkcji zachowują się jak zmienne lokalne. Zmienne lokalne przechowywane są przeważnie na stosie. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 11 / 21
Zmienne globalne Zmienne globalne są widzialne w całym programie i można z nich korzystać, modyfikować ich wartości, w dowolnym miejscu programu. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 12 / 21
Zmienne globalne Zmienne globalne są widzialne w całym programie i można z nich korzystać, modyfikować ich wartości, w dowolnym miejscu programu. Zachowują swoją wartość (zajmują pamięć) przez cały czas działania programu. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 12 / 21
Zmienne globalne Zmienne globalne są widzialne w całym programie i można z nich korzystać, modyfikować ich wartości, w dowolnym miejscu programu. Zachowują swoją wartość (zajmują pamięć) przez cały czas działania programu. Zmienne globalne tworzy się, deklarując je poza wszelkimi funkcjami. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 12 / 21
Zmienne globalne Zmienne globalne są widzialne w całym programie i można z nich korzystać, modyfikować ich wartości, w dowolnym miejscu programu. Zachowują swoją wartość (zajmują pamięć) przez cały czas działania programu. Zmienne globalne tworzy się, deklarując je poza wszelkimi funkcjami. Zmienne globalne przechowywane są w wydzielonych miejscach pamięci, zarezerwowanych dla nich przez kompilator. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 12 / 21
Zmienne globalne Zmienne globalne są widzialne w całym programie i można z nich korzystać, modyfikować ich wartości, w dowolnym miejscu programu. Zachowują swoją wartość (zajmują pamięć) przez cały czas działania programu. Zmienne globalne tworzy się, deklarując je poza wszelkimi funkcjami. Zmienne globalne przechowywane są w wydzielonych miejscach pamięci, zarezerwowanych dla nich przez kompilator. Zmienne globalne przydają się w programach, w których wiele funkcji intensywnie korzysta z tych samych danych. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 12 / 21
Zmienne globalne Zmienne globalne są widzialne w całym programie i można z nich korzystać, modyfikować ich wartości, w dowolnym miejscu programu. Zachowują swoją wartość (zajmują pamięć) przez cały czas działania programu. Zmienne globalne tworzy się, deklarując je poza wszelkimi funkcjami. Zmienne globalne przechowywane są w wydzielonych miejscach pamięci, zarezerwowanych dla nich przez kompilator. Zmienne globalne przydają się w programach, w których wiele funkcji intensywnie korzysta z tych samych danych. Należy unikać stosowania niepotrzebnych zmiennych globalnych. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 12 / 21
Cztery zasięgi języka C Standard języka C definiuje 4 zasięgi widzialności identyfikatora: (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 13 / 21
Cztery zasięgi języka C Standard języka C definiuje 4 zasięgi widzialności identyfikatora: 1 zasięg pliku zaczyna się na początku i kończy na końcu pliku odnosi się tylko do identyfikatorów zadeklarowanych poza wszelkimi funkcjami. Zmienne o zasięgu pliku to zmienne globalne. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 13 / 21
Cztery zasięgi języka C Standard języka C definiuje 4 zasięgi widzialności identyfikatora: 1 zasięg pliku zaczyna się na początku i kończy na końcu pliku odnosi się tylko do identyfikatorów zadeklarowanych poza wszelkimi funkcjami. Zmienne o zasięgu pliku to zmienne globalne. 2 zasięg bloku zaczyna się {, a kończy }. Zasięg bloku funkcji rozciąga się na listę parametrów w definicji funkcji. Zmienne w zasięgu bloku są zmiennymi lokalnymi. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 13 / 21
Cztery zasięgi języka C Standard języka C definiuje 4 zasięgi widzialności identyfikatora: 1 zasięg pliku zaczyna się na początku i kończy na końcu pliku odnosi się tylko do identyfikatorów zadeklarowanych poza wszelkimi funkcjami. Zmienne o zasięgu pliku to zmienne globalne. 2 zasięg bloku zaczyna się {, a kończy }. Zasięg bloku funkcji rozciąga się na listę parametrów w definicji funkcji. Zmienne w zasięgu bloku są zmiennymi lokalnymi. 3 zasięg prototypu funkcji Identyfikatory zadeklarowane w prototypie funkcji, widoczne tylko wewnątrz prototypu funkcji. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 13 / 21
Cztery zasięgi języka C Standard języka C definiuje 4 zasięgi widzialności identyfikatora: 1 zasięg pliku zaczyna się na początku i kończy na końcu pliku odnosi się tylko do identyfikatorów zadeklarowanych poza wszelkimi funkcjami. Zmienne o zasięgu pliku to zmienne globalne. 2 zasięg bloku zaczyna się {, a kończy }. Zasięg bloku funkcji rozciąga się na listę parametrów w definicji funkcji. Zmienne w zasięgu bloku są zmiennymi lokalnymi. 3 zasięg prototypu funkcji Identyfikatory zadeklarowane w prototypie funkcji, widoczne tylko wewnątrz prototypu funkcji. 4 zasięg funkcji Zaczyna się {, a kończy }. Zasięg funkcji dotyczy jedynie etykiet. Etykieta służy jako obiekt docelowy instrukcji goto i musi znajdować się w tej samej funkcji co ta instrukcja. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 13 / 21
Inicjowanie zmiennych Deklarując zmienną można nadać jej wartość początkową(zdefiniować) w następujący sposób: (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 14 / 21
Inicjowanie zmiennych Deklarując zmienną można nadać jej wartość początkową(zdefiniować) w następujący sposób: typ nazwazmiennej = wartość; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 14 / 21
Inicjowanie zmiennych Deklarując zmienną można nadać jej wartość początkową(zdefiniować) w następujący sposób: typ nazwazmiennej = wartość; char ch = a ; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 14 / 21
Inicjowanie zmiennych Deklarując zmienną można nadać jej wartość początkową(zdefiniować) w następujący sposób: typ nazwazmiennej = wartość; char ch = a ; char znakjeden = 1 ; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 14 / 21
Inicjowanie zmiennych Deklarując zmienną można nadać jej wartość początkową(zdefiniować) w następujący sposób: typ nazwazmiennej = wartość; char ch = a ; char znakjeden = 1 ; char cyfrajeden = 1; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 14 / 21
Inicjowanie zmiennych Deklarując zmienną można nadać jej wartość początkową(zdefiniować) w następujący sposób: typ nazwazmiennej = wartość; char ch = a ; char znakjeden = 1 ; char cyfrajeden = 1; int zm = 12; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 14 / 21
Inicjowanie zmiennych Deklarując zmienną można nadać jej wartość początkową(zdefiniować) w następujący sposób: typ nazwazmiennej = wartość; char ch = a ; char znakjeden = 1 ; char cyfrajeden = 1; int zm = 12; float flo = 12e-7; Zmienne globalne oraz zmienne statyczne inicjujemy tylko raz w momencie deklaracji. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 14 / 21
Inicjowanie zmiennych Deklarując zmienną można nadać jej wartość początkową(zdefiniować) w następujący sposób: typ nazwazmiennej = wartość; char ch = a ; char znakjeden = 1 ; char cyfrajeden = 1; int zm = 12; float flo = 12e-7; Zmienne globalne oraz zmienne statyczne inicjujemy tylko raz w momencie deklaracji. Niestatyczne zmienne lokalne inicjowane są za każdym razem, gdy sterowanie przechodzi do bloku, w którym znajduje się ich deklaracja. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 14 / 21
Inicjowanie zmiennych Deklarując zmienną można nadać jej wartość początkową(zdefiniować) w następujący sposób: typ nazwazmiennej = wartość; char ch = a ; char znakjeden = 1 ; char cyfrajeden = 1; int zm = 12; float flo = 12e-7; Zmienne globalne oraz zmienne statyczne inicjujemy tylko raz w momencie deklaracji. Niestatyczne zmienne lokalne inicjowane są za każdym razem, gdy sterowanie przechodzi do bloku, w którym znajduje się ich deklaracja. Niezainicjowane zmienne lokalne maja nieokreśloną wartość. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 14 / 21
Inicjowanie zmiennych Deklarując zmienną można nadać jej wartość początkową(zdefiniować) w następujący sposób: typ nazwazmiennej = wartość; char ch = a ; char znakjeden = 1 ; char cyfrajeden = 1; int zm = 12; float flo = 12e-7; Zmienne globalne oraz zmienne statyczne inicjujemy tylko raz w momencie deklaracji. Niestatyczne zmienne lokalne inicjowane są za każdym razem, gdy sterowanie przechodzi do bloku, w którym znajduje się ich deklaracja. Niezainicjowane zmienne lokalne maja nieokreśloną wartość. Niezainicjowane zmienne statyczne maja zerową wartość. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 14 / 21
Inicjowanie zmiennych Deklarując zmienną można nadać jej wartość początkową(zdefiniować) w następujący sposób: typ nazwazmiennej = wartość; char ch = a ; char znakjeden = 1 ; char cyfrajeden = 1; int zm = 12; float flo = 12e-7; Zmienne globalne oraz zmienne statyczne inicjujemy tylko raz w momencie deklaracji. Niestatyczne zmienne lokalne inicjowane są za każdym razem, gdy sterowanie przechodzi do bloku, w którym znajduje się ich deklaracja. Niezainicjowane zmienne lokalne maja nieokreśloną wartość. Niezainicjowane zmienne statyczne maja zerową wartość. Niezainicjowane zmienne globalne maja zerową wartość. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 14 / 21
Stałe Stałe to ustalone wartości, których program nie może zmienić; mogą należeć do jednego z podstawowych typów. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 15 / 21
Stałe Stałe to ustalone wartości, których program nie może zmienić; mogą należeć do jednego z podstawowych typów. Sposób reprezentacji stałej zależy od jej typu. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 15 / 21
Stałe Stałe to ustalone wartości, których program nie może zmienić; mogą należeć do jednego z podstawowych typów. Sposób reprezentacji stałej zależy od jej typu. Stałe nazywane też są wartościami natychmiastowymi lub literałami. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 15 / 21
Stałe Stałe to ustalone wartości, których program nie może zmienić; mogą należeć do jednego z podstawowych typów. Sposób reprezentacji stałej zależy od jej typu. Stałe nazywane też są wartościami natychmiastowymi lub literałami. Stałe znakowe: a,?. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 15 / 21
Stałe Stałe to ustalone wartości, których program nie może zmienić; mogą należeć do jednego z podstawowych typów. Sposób reprezentacji stałej zależy od jej typu. Stałe nazywane też są wartościami natychmiastowymi lub literałami. Stałe znakowe: a,?. Stałe całkowite: 123, 3242. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 15 / 21
Stałe Stałe to ustalone wartości, których program nie może zmienić; mogą należeć do jednego z podstawowych typów. Sposób reprezentacji stałej zależy od jej typu. Stałe nazywane też są wartościami natychmiastowymi lub literałami. Stałe znakowe: a,?. Stałe całkowite: 123, 3242. Stałe zmiennoprzecinkowe: 123.3242, 123.16e 11. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 15 / 21
Stałe Stałe to ustalone wartości, których program nie może zmienić; mogą należeć do jednego z podstawowych typów. Sposób reprezentacji stałej zależy od jej typu. Stałe nazywane też są wartościami natychmiastowymi lub literałami. Stałe znakowe: a,?. Stałe całkowite: 123, 3242. Stałe zmiennoprzecinkowe: 123.3242, 123.16e 11. Standardowo kompilator dopasowuje stałą liczbową do najmniejszego typu danych. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 15 / 21
Stałe Stałe to ustalone wartości, których program nie może zmienić; mogą należeć do jednego z podstawowych typów. Sposób reprezentacji stałej zależy od jej typu. Stałe nazywane też są wartościami natychmiastowymi lub literałami. Stałe znakowe: a,?. Stałe całkowite: 123, 3242. Stałe zmiennoprzecinkowe: 123.3242, 123.16e 11. Standardowo kompilator dopasowuje stałą liczbową do najmniejszego typu danych. Dla 16-bitowego typu całkowitego 10 będzie typu int, ale 103000 będzie typem long int. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 15 / 21
Stałe Stałe to ustalone wartości, których program nie może zmienić; mogą należeć do jednego z podstawowych typów. Sposób reprezentacji stałej zależy od jej typu. Stałe nazywane też są wartościami natychmiastowymi lub literałami. Stałe znakowe: a,?. Stałe całkowite: 123, 3242. Stałe zmiennoprzecinkowe: 123.3242, 123.16e 11. Standardowo kompilator dopasowuje stałą liczbową do najmniejszego typu danych. Dla 16-bitowego typu całkowitego 10 będzie typu int, ale 103000 będzie typem long int. Stałe zmiennoprzecinkowe zawsze są typu double. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 15 / 21
Stałe Aby dokładnie określić typ stałej należy korzystać z przyrostka. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 16 / 21
Stałe Aby dokładnie określić typ stałej należy korzystać z przyrostka. Stałe zmiennoprzecinkowe: F lub f stała typu float L lub l - stała typu long double (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 16 / 21
Stałe Aby dokładnie określić typ stałej należy korzystać z przyrostka. Stałe zmiennoprzecinkowe: F lub f stała typu float L lub l - stała typu long double Stałe całkowite: (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 16 / 21
Stałe Aby dokładnie określić typ stałej należy korzystać z przyrostka. Stałe zmiennoprzecinkowe: F lub f stała typu float L lub l - stała typu long double Stałe całkowite: U lub u stała typu unsigned int L lub l - stała typu long int (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 16 / 21
Stałe Aby dokładnie określić typ stałej należy korzystać z przyrostka. Stałe zmiennoprzecinkowe: F lub f stała typu float L lub l - stała typu long double Stałe całkowite: U lub u stała typu unsigned int L lub l - stała typu long int Przykłady: (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 16 / 21
Stałe Aby dokładnie określić typ stałej należy korzystać z przyrostka. Stałe zmiennoprzecinkowe: F lub f stała typu float L lub l - stała typu long double Stałe całkowite: U lub u stała typu unsigned int L lub l - stała typu long int Przykłady: 1, 123, -234 stałe typu int (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 16 / 21
Stałe Aby dokładnie określić typ stałej należy korzystać z przyrostka. Stałe zmiennoprzecinkowe: F lub f stała typu float L lub l - stała typu long double Stałe całkowite: U lub u stała typu unsigned int L lub l - stała typu long int Przykłady: 1, 123, -234 stałe typu int 35000L, -34L stałe typu long int (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 16 / 21
Stałe Aby dokładnie określić typ stałej należy korzystać z przyrostka. Stałe zmiennoprzecinkowe: F lub f stała typu float L lub l - stała typu long double Stałe całkowite: U lub u stała typu unsigned int L lub l - stała typu long int Przykłady: 1, 123, -234 stałe typu int 35000L, -34L stałe typu long int 10000U, 987u stałe typu unsigned int (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 16 / 21
Stałe Aby dokładnie określić typ stałej należy korzystać z przyrostka. Stałe zmiennoprzecinkowe: F lub f stała typu float L lub l - stała typu long double Stałe całkowite: U lub u stała typu unsigned int L lub l - stała typu long int Przykłady: 1, 123, -234 stałe typu int 35000L, -34L stałe typu long int 10000U, 987u stałe typu unsigned int 123.23F, 4.34e-2f stałe typu float (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 16 / 21
Stałe Aby dokładnie określić typ stałej należy korzystać z przyrostka. Stałe zmiennoprzecinkowe: F lub f stała typu float L lub l - stała typu long double Stałe całkowite: U lub u stała typu unsigned int L lub l - stała typu long int Przykłady: 1, 123, -234 stałe typu int 35000L, -34L stałe typu long int 10000U, 987u stałe typu unsigned int 123.23F, 4.34e-2f stałe typu float 123.23, 1.0, -0.89898 stałe typu double (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 16 / 21
Stałe Aby dokładnie określić typ stałej należy korzystać z przyrostka. Stałe zmiennoprzecinkowe: F lub f stała typu float L lub l - stała typu long double Stałe całkowite: U lub u stała typu unsigned int L lub l - stała typu long int Przykłady: 1, 123, -234 stałe typu int 35000L, -34L stałe typu long int 10000U, 987u stałe typu unsigned int 123.23F, 4.34e-2f stałe typu float 123.23, 1.0, -0.89898 stałe typu double 123.23L, 1000.12L stałe typu long double (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 16 / 21
Stałe W C można używać liczb zapisanych w systemach ósemkowym lub szesnastkowym: (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 17 / 21
Stałe W C można używać liczb zapisanych w systemach ósemkowym lub szesnastkowym: int hex = 0x80; //80 16 = 128 10 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 17 / 21
Stałe W C można używać liczb zapisanych w systemach ósemkowym lub szesnastkowym: int hex = 0x80; //80 16 = 128 10 int oct = 012; //12 8 = 10 10 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 17 / 21
Stałe W C można używać liczb zapisanych w systemach ósemkowym lub szesnastkowym: int hex = 0x80; //80 16 = 128 10 int oct = 012; //12 8 = 10 10 Stała tekstowa to zbiór znaków otoczonych znakami cudzysłowu - zbiór znaków i cyfra 2 w otoczeniu. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 17 / 21
Stałe W C można używać liczb zapisanych w systemach ósemkowym lub szesnastkowym: int hex = 0x80; //80 16 = 128 10 int oct = 012; //12 8 = 10 10 Stała tekstowa to zbiór znaków otoczonych znakami cudzysłowu - zbiór znaków i cyfra 2 w otoczeniu. Uwaga: (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 17 / 21
Stałe W C można używać liczb zapisanych w systemach ósemkowym lub szesnastkowym: int hex = 0x80; //80 16 = 128 10 int oct = 012; //12 8 = 10 10 Stała tekstowa to zbiór znaków otoczonych znakami cudzysłowu - zbiór znaków i cyfra 2 w otoczeniu. Uwaga: a zmienna, (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 17 / 21
Stałe W C można używać liczb zapisanych w systemach ósemkowym lub szesnastkowym: int hex = 0x80; //80 16 = 128 10 int oct = 012; //12 8 = 10 10 Stała tekstowa to zbiór znaków otoczonych znakami cudzysłowu - zbiór znaków i cyfra 2 w otoczeniu. Uwaga: a zmienna, a znak, (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 17 / 21
Stałe W C można używać liczb zapisanych w systemach ósemkowym lub szesnastkowym: int hex = 0x80; //80 16 = 128 10 int oct = 012; //12 8 = 10 10 Stała tekstowa to zbiór znaków otoczonych znakami cudzysłowu - zbiór znaków i cyfra 2 w otoczeniu. Uwaga: a zmienna, a znak, a stała tekstowa, tablica znaków zakończona znakiem końca łańcucha. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 17 / 21
Sekwencje specjalne Sekwencje specjalne to znaki sterujące, których nie można wpisywać bezpośrednio z klawiatury. \b - backspace \f - nowa strona \n - nowy wiersz \r - powrót karetki \t - poziomy tabulator \" - znak cudzysłowu \ - apostrof \\ - lewy ukośnik \v - pionowy tabulator \a - dzwonek \? - znak zapytania \N - stała ósemkowa (N oznacza stała zapisana ósemkowo) \xn - stała szesnastkowa (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 18 / 21
Operatory Cztery główne typy operatorów: (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 19 / 21
Operatory Cztery główne typy operatorów: 1 arytmetyczne, (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 19 / 21
Operatory Cztery główne typy operatorów: 1 arytmetyczne, 2 relacyjne, (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 19 / 21
Operatory Cztery główne typy operatorów: 1 arytmetyczne, 2 relacyjne, 3 logiczne, (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 19 / 21
Operatory Cztery główne typy operatorów: 1 arytmetyczne, 2 relacyjne, 3 logiczne, 4 bitowe. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 19 / 21
Operatory Cztery główne typy operatorów: 1 arytmetyczne, 2 relacyjne, 3 logiczne, 4 bitowe. Operator przypisania: (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 19 / 21
Operatory Cztery główne typy operatorów: 1 arytmetyczne, 2 relacyjne, 3 logiczne, 4 bitowe. Operator przypisania: nazwa zmiennej = wyrażenie; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 19 / 21
Operatory Cztery główne typy operatorów: 1 arytmetyczne, 2 relacyjne, 3 logiczne, 4 bitowe. Operator przypisania: nazwa zmiennej = wyrażenie; wyrażenie może być stałą lub dowolnie skomplikowanym poprawnym wyrażeniem. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 19 / 21
Operatory Cztery główne typy operatorów: 1 arytmetyczne, 2 relacyjne, 3 logiczne, 4 bitowe. Operator przypisania: nazwa zmiennej = wyrażenie; wyrażenie może być stałą lub dowolnie skomplikowanym poprawnym wyrażeniem. reguła przekształcania typów - wartość z prawej strony instrukcji przypisania przekształcana jest do typu lewej strony. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 19 / 21
Operatory Cztery główne typy operatorów: 1 arytmetyczne, 2 relacyjne, 3 logiczne, 4 bitowe. Operator przypisania: nazwa zmiennej = wyrażenie; wyrażenie może być stałą lub dowolnie skomplikowanym poprawnym wyrażeniem. reguła przekształcania typów - wartość z prawej strony instrukcji przypisania przekształcana jest do typu lewej strony. Wielokrotne przypisanie: x = y = z = 0; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 19 / 21
Operatory Cztery główne typy operatorów: 1 arytmetyczne, 2 relacyjne, 3 logiczne, 4 bitowe. Operator przypisania: nazwa zmiennej = wyrażenie; wyrażenie może być stałą lub dowolnie skomplikowanym poprawnym wyrażeniem. reguła przekształcania typów - wartość z prawej strony instrukcji przypisania przekształcana jest do typu lewej strony. Wielokrotne przypisanie: x = y = z = 0; Przypisanie złożone: x = x + 10; zapisujemy w skrócie: x += 10; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 19 / 21
Operatory Cztery główne typy operatorów: 1 arytmetyczne, 2 relacyjne, 3 logiczne, 4 bitowe. Operator przypisania: nazwa zmiennej = wyrażenie; wyrażenie może być stałą lub dowolnie skomplikowanym poprawnym wyrażeniem. reguła przekształcania typów - wartość z prawej strony instrukcji przypisania przekształcana jest do typu lewej strony. Wielokrotne przypisanie: x = y = z = 0; Przypisanie złożone: x = x + 10; zapisujemy w skrócie: x += 10; Ogólna postać: zmienna = zmienna operator wyrażenie; zapisujemy jako zmienna operator= wyrażenie; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 19 / 21
Operatory arytmetyczne odejmowanie, jednoargumentowy minus, (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 20 / 21
Operatory arytmetyczne odejmowanie, jednoargumentowy minus, + dodawanie, (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 20 / 21
Operatory arytmetyczne odejmowanie, jednoargumentowy minus, + dodawanie, mnożenie, (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 20 / 21
Operatory arytmetyczne odejmowanie, jednoargumentowy minus, + dodawanie, mnożenie, / dzielenie, (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 20 / 21
Operatory arytmetyczne odejmowanie, jednoargumentowy minus, + dodawanie, mnożenie, / dzielenie, % dzielenie modulo (reszta z dzielenia, tylko char, int), (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 20 / 21
Operatory arytmetyczne odejmowanie, jednoargumentowy minus, + dodawanie, mnożenie, / dzielenie, % dzielenie modulo (reszta z dzielenia, tylko char, int), dekrementacja, (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 20 / 21
Operatory arytmetyczne odejmowanie, jednoargumentowy minus, + dodawanie, mnożenie, / dzielenie, % dzielenie modulo (reszta z dzielenia, tylko char, int), dekrementacja, ++ inkrementacja. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 20 / 21
Operatory arytmetyczne int x = 5/2; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 21 / 21
Operatory arytmetyczne int x = 5/2; //wartość x w wyniku operacji dzielenia wynosi 2. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 21 / 21
Operatory arytmetyczne int x = 5/2; //wartość x w wyniku operacji dzielenia wynosi 2. int x = 5.0/2.0; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 21 / 21
Operatory arytmetyczne int x = 5/2; //wartość x w wyniku operacji dzielenia wynosi 2. int x = 5.0/2.0; //wartość x w wyniku operacji dzielenia wynosi 2. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 21 / 21
Operatory arytmetyczne int x = 5/2; //wartość x w wyniku operacji dzielenia wynosi 2. int x = 5.0/2.0; //wartość x w wyniku operacji dzielenia wynosi 2. double y = 5/2; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 21 / 21
Operatory arytmetyczne int x = 5/2; //wartość x w wyniku operacji dzielenia wynosi 2. int x = 5.0/2.0; //wartość x w wyniku operacji dzielenia wynosi 2. double y = 5/2; //wartość y w wyniku operacji dzielenia wynosi 2.0. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 21 / 21
Operatory arytmetyczne int x = 5/2; //wartość x w wyniku operacji dzielenia wynosi 2. int x = 5.0/2.0; //wartość x w wyniku operacji dzielenia wynosi 2. double y = 5/2; //wartość y w wyniku operacji dzielenia wynosi 2.0. double y = 5.0/2; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 21 / 21
Operatory arytmetyczne int x = 5/2; //wartość x w wyniku operacji dzielenia wynosi 2. int x = 5.0/2.0; //wartość x w wyniku operacji dzielenia wynosi 2. double y = 5/2; //wartość y w wyniku operacji dzielenia wynosi 2.0. double y = 5.0/2; //wartość y w wyniku operacji dzielenia wynosi 2.5. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 21 / 21
Operatory arytmetyczne int x = 5/2; //wartość x w wyniku operacji dzielenia wynosi 2. int x = 5.0/2.0; //wartość x w wyniku operacji dzielenia wynosi 2. double y = 5/2; //wartość y w wyniku operacji dzielenia wynosi 2.0. double y = 5.0/2; //wartość y w wyniku operacji dzielenia wynosi 2.5. double y = 5/(double)2; (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 21 / 21
Operatory arytmetyczne int x = 5/2; //wartość x w wyniku operacji dzielenia wynosi 2. int x = 5.0/2.0; //wartość x w wyniku operacji dzielenia wynosi 2. double y = 5/2; //wartość y w wyniku operacji dzielenia wynosi 2.0. double y = 5.0/2; //wartość y w wyniku operacji dzielenia wynosi 2.5. double y = 5/(double)2; //wartość y w wyniku operacji dzielenia wynosi 2.5. (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 21 / 21