C/C++
nazwy,
słowa kluczowe,
zmienne,
typy proste,
stałe,
operatory,
wyraŜenia,
instrukcja przypisania.
C/C++ -
nazwy
, słowa kluczowe, zmienne, typy proste,
stałe, operatory, wyraŜenia, instrukcja przypisania.
Nazwa
Nazwa inaczej identyfikator jest oznaczeniem zmiennej, funkcji, etykiety
(innych obiektów zdefiniowanych przez uŜytkownika).
Zasady nadawania nazw:
1.
W języku C nazwa moŜe składać się z: liter, cyfr i znaku podkreślenia,
przy czym nie moŜe zaczynać się od cyfry. RozróŜnianych jest
pierwszych 31 znaków. W C++ nie ma ograniczeń na długość.
2.
W języku C/C++ rozróŜniane są małe i wielkie litery.
3.
Nazwa nie moŜe być identyczna ze słowem kluczowym (słowa kluczowe
stanowią alfabet języka programowania (w C nie moŜe takŜe być
identyczna z nazwą funkcji własnej uŜytkownika lub znajdującej się w
bibliotece).
Słowa kluczowe
Słowa kluczowe są ciągami znaków których znaczenie w języku jest dokładnie
określone i nie wolno ich wykorzystywać w charakterze nazw.
Język C
auto, break, case, char, const, continue, default, do, double, else,
enum, extern, float, for, goto, if, int, long, register, return, short,
signed, sizeof, static, struct, switch, typedef, union, unsigned, void,
volatile, while.
(32)
Język C++ (dodatkowo)
asm, bool, catch, class, const_cast, delete, dynamic_cast, explicit,
false, friend, inline, mutable, namespace, new, operator, private,
protected, public, reinterpret_cast, static_cast, template, this, throw,
true, try, typeid, typename, using, virtual, wchar_t.
(30)
C/C++ - nazwy,
słowa kluczowe
, zmienne, typy proste,
stałe, operatory, wyraŜenia, instrukcja przypisania.
Zmienne
Zmienną nazywamy komórkę (lub komórki) pamięci mogącą przechowywać
daną określonego typu. Zmienna posiada nazwę. Nazwa i typ zmiennej
określane są w procesie deklaracji zmiennej.
Nazwy zmiennym nadaje się zgodnie z ogólnymi zasadami tworzenia nazw.
Typ zmiennej określa, jaki rodzaj danych w zmiennej moŜe być
przechowywany (liczby całkowite, liczby rzeczywiste, znaki, wartości
logiczne, macierze, struktury określone przez uŜytkownika). Typy danych
moŜna podzielić na typy proste i złoŜone.
Do zmiennej moŜna zapisywać dane oraz moŜna z niej dane odczytywać.
Zmienne dzieli się na lokalne – deklarowane wewnątrz funkcji, oraz globalne
– deklarowane poza funkcjami.
W procesie deklaracji zmiennej określa się takŜe tzw. specyfikator klasy
pamięci.
C/C++ - nazwy, słowa kluczowe,
zmienne
, typy proste,
stałe, operatory, wyraŜenia, instrukcja przypisania.
Zmienne c.d.
Przykład deklaracji zmiennej
register int liczba_calkowita;
specyfikator klasy
pamięci
nazwa typu
nazwa zmiennej
W powyŜszym przykładzie została zadeklarowana zmienna o nazwie
liczba_calkowita, typu całkowitego (int) i o ile jest to moŜliwe, to będzie
zapamiętana w rejestrze procesora (specyfikator register). JeŜeli w czasie
deklaracji zmiennej nie zostanie określony specyfikator klasy pamięci to
jest on ustalany domyślnie w zaleŜności od miejsca deklaracji zmiennej.
C/C++ - nazwy, słowa kluczowe,
zmienne
, typy proste,
stałe, operatory, wyraŜenia, instrukcja przypisania.
Klasy pamięci
register - jest wykorzystywany do deklaracji zmiennych do których
dostęp powinien być szybki. O ile jest to moŜliwe to kompilator
zapamiętuje te zmienne w rejestrze. Z klasą register powinny być
deklarowane zmienne do których następują częste odwołania. NaleŜy
równieŜ pamiętać, Ŝe nie wszystkie zmienne mogą być zapamiętane
w rejestrach ze względu na ograniczoną ich liczbę.
C/C++ - nazwy, słowa kluczowe,
zmienne
, typy proste,
stałe, operatory, wyraŜenia, instrukcja przypisania.
W języku C++ występują 4 klasy pamięci:
register
extern
static
auto
Specyfikator klasy pamięci w linii deklaracji zmiennej informuje
kompilator o tym, w jaki sposób ma być zapamiętana zmienna
.
Klasy pamięci
extern - jest wykorzystywany do oznaczenia zmiennej zadeklarowanej
na zewnątrz pliku źródłowego (lub funkcji). Jest to informacja dla
konsolidatora którego zadaniem jest połączenie osobno skompilowanych
plików. UŜycie specyfikatora extern skutkuje tym, Ŝe kompilator nie
rezerwuje pamięci dla tak zadeklarowanej zmiennej.
C/C++ - nazwy, słowa kluczowe,
zmienne
, typy proste,
stałe, operatory, wyraŜenia, instrukcja przypisania.
static – zastosowanie tego specyfikatora do zmiennej lokalnej powoduje
przypisanie jej trwałego miejsca w pamięci (jak zmiennej globalnej).
Statyczna zmienna lokalna zachowuje więc swoją wartość pomiędzy
kolejnymi wywołaniami funkcji.
auto – zmienna jest usuwana z pamięci w chwili zakończenia bloku
w którym została zadeklarowana. Jest to domyślna klasa dla zmiennych
deklarowanych w funkcjach (blokach).
Typy danych – typy proste
W języku C++ wyróŜniamy 7 podstawowych (atomowych),
wbudowanych typów. Są to:
char –
typ znakowy
int –
typ całkowity
float –
typ zmiennoprzecinkowy
double –
typ zmiennoprzecinkowy podwójnej precyzji
void –
typ bez wartości
bool –
typ logiczny
wchar_t –
typ szerokich znaków
C++
C
W C++, dzięki zaimplementowaniu klasy string moŜliwe jest uŜywanie
typu łańcuchowego. Nie jest to jednak typ wbudowany.
C/C++ - nazwy, słowa kluczowe, zmienne,
typy proste
,
stałe, operatory, wyraŜenia, instrukcja przypisania.
Typy danych – typy proste: void i bool
Typ void jest wykorzystywany w 3 przypadkach:
- deklarowanie funkcji nie zwracających wartości,
- deklarowanie funkcji nie pobierających Ŝadnych argumentów,
- tworzenie wskaźników ogólnych.
Typ logiczny bool słuŜy do przechowywania wartości logicznych
true
lub
false
. Wartość
false
– fałszu odpowiada liczbie 0, a wartość
true
–
prawdy, liczbie całkowitej róŜnej od zera.
C/C++ - nazwy, słowa kluczowe, zmienne,
typy proste
,
stałe, operatory, wyraŜenia, instrukcja przypisania.
Typy danych – typy proste (atomowe), przykłady deklaracji
Typy danych – typy proste – modyfikatory typów
W języku C++ typy: char, int, double mogą zostać zmodyfikowane przy
pomocy tzw. modyfikatorów typów. Występuje 4 modyfikatory:
signed (ze znakiem)
unsigned (bez znaku)
long (format długi)
short (format krótki)
Postać deklaracji z wykorzystaniem modyfikatora typu:
modyfikator typu
nazwa typu
nazwa zmiennej
unsigned char znak;
C/C++ - nazwy, słowa kluczowe, zmienne,
typy proste
,
stałe, operatory, wyraŜenia, instrukcja przypisania.
Typy danych – typy proste – modyfikatory typów
W uzasadnionych przypadkach moŜna uŜyć modyfikatora w stosunku do
juŜ zmodyfikowanego typu. Modyfikatory naleŜy interpretować
parami : (signed, unsigned) i (long, short) i trzymać się zasady, Ŝe
w jednej deklaracji nie występują dwa modyfikatory z tej samej pary.
Postać deklaracji z wykorzystaniem modyfikatora typu zmodyfikowanego
unsigned short int krotka_liczba_bez_znaku;
modyfikator typu
nazwa typu
nazwa zmiennej
C/C++ - nazwy, słowa kluczowe, zmienne,
typy proste
,
stałe, operatory, wyraŜenia, instrukcja przypisania.
Typy danych – uŜyteczne połączenia typów prostych z modyfikatorami
w systemach 32 bitowych ich charakterystyka
C/C++ - nazwy, słowa kluczowe, zmienne,
typy proste
,
stałe, operatory, wyraŜenia, instrukcja przypisania.
3,4 *10
-4932
do 1,1*10
+4932
10
long double
1,7*10
-308
do 1,7*10
308
8
double
3,4*10
-38
do 3,4*10
38
4
float
0 do 65535
2
unsigned short int
-32 768 do 32767
2
short int
0 do 4 294 967 295
4
unsigned int
-2 147 483 648 do 2 147 483 647
4
int
0 do 255
1
unsigned char
-128 do 127
1
char
Zakres
Liczba bajtów
Typ
przykład
Typy danych – typy proste – modyfikatory dostępu do zmiennych
W języku C++ występują dwa modyfikatory typu określające dostęp do
zmiennej. Są to modyfikatory:
const
volatile
Zmiennych zadeklarowanych z modyfikatorem const nie moŜna zmieniać w
trakcie działania programu. Nadanie wartości odbywa się w linii deklaracji
Przykład deklaracji:
const int stala=7;
Modyfikator volatile jest wykorzystywany w celu poinformowania kompilatora
o tym, Ŝe wartość zmiennej moŜe ulec w sposób nieokreślony w programie.
Modyfikatory const i volatile moŜna stosować łącznie.
C/C++ - nazwy, słowa kluczowe, zmienne,
typy proste
,
stałe, operatory, wyraŜenia, instrukcja przypisania.
Stałe (literały)
W języku C++ stałe reprezentują ustalone wartości, które nie mogą być
zmieniane w trakcie działania programu. Stałe mogą być dowolnego
typu prostego oraz dodatkowo, stała moŜe być łańcuchem znaków
(ciągiem znaków umieszczonych w cudzysłowie).
C/C++ - nazwy, słowa kluczowe, zmienne, typy proste,
stałe
, operatory, wyraŜenia, instrukcja przypisania.
”łańcuch znaków”
false true
bool
134.45 5.32
double
134.45F 5.32e -4F
float
985U 30000U
unsigned int
3 67 -567
int
‘s’ ‘6’ ‘\n’
char
Przykłady stałych
Typ
Stałe - wybrane znaki z ukośnikiem wstecznym
(sterujące, specjalne)
C/C++ - nazwy, słowa kluczowe, zmienne, typy proste,
stałe
, operatory, wyraŜenia, instrukcja przypisania.
\b
znak cofania o jedno pole znakowe
\n
znak przejścia do nowego wiersza
\r
znak powrotu karetki
\0
znak zerowy (ang. Null)
\\
ukośnik wsteczny
\a
sygnał dźwiękowy
\”
cudzysłów
\’
apostrof
Operatory
W języku C++ występują następujące grupy operatorów:
arytmetyczne,
relacji,
logiczne,
bitowe,
specjalne
skróty
C/C++ - nazwy, słowa kluczowe, zmienne, typy proste,
stałe,
operatory
, wyraŜenia, instrukcja przypisania.
Operatory arytmetyczne
+
dodawanie,
-
odejmowanie,
*
mnoŜenie,
/
dzielenie,
%
dzielenie modulo (reszta z dzielenia),
++ inkrementacja (zwiększenie wartości o 1),
--
dekrementacja (zmniejszenie wartości o 1)
operatory inkrementacji i dekrementacji mogą być uŜywane
przedrostkowo lub przyrostkowo, w instrukcjach przypisania nie
jest obojętne z jakiej postaci się korzysta.
C/C++ - nazwy, słowa kluczowe, zmienne, typy proste,
stałe,
operatory
, wyraŜenia, instrukcja przypisania.
priorytety (od najwyŜszego):
+
-
++
--
(jednoargumentowe)
* / %
+
-
(dwuargumentowe)
Uwaga: dzielenie operandów typu int daje wynik typu int (następuje odrzucenie
ułamka)
Operatory c.d.
Operatory relacji
>
większy
<
mniejszy
>=
większy równy
<=
mniejszy równy
==
równy
!=
róŜny
Operatory logiczne
&&
iloczyn logiczny, AND
||
suma logiczna, OR
!
negacja logiczna, NOT
C/C++ - nazwy, słowa kluczowe, zmienne, typy proste,
stałe,
operatory
, wyraŜenia, instrukcja przypisania.
Priorytety (od najwyŜszego) ,operatory
relacji i logiczne łącznie :
!
> >= < <=
== !=
&&
||
Operatory bitowe
&
iloczyn bitowy, AND
|
suma bitowa, OR
^
róŜnica symetryczna, XOR (1 kiedy róŜne)
~
negacja bitowa, NOT
>>
przesunięcie w prawo
<<
przesunięcie w lewo
C/C++ - nazwy, słowa kluczowe, zmienne, typy proste,
stałe,
operatory
, wyraŜenia, instrukcja przypisania.
Operatory bitowe c.d.
Operatory bitowe stosowane są w języku C do zmiennych typu char i int.
Zastosowanie typowe:
&
zerowanie bitów
|
ustawianie bitów (na 1)
<< szybkie mnoŜenie 2
liczba_pozycji_przesunięcia
>> szybkie dzielenie (analogicznie)
Operacje przesunięcia <<, >> nie są operacjami przesunięcia cyklicznego
Usunięte bity są tracone a wchodzące posiadają wartość 0.
Wyjątek stanowi przesunięcie w prawo liczby ujemnej, kiedy
uzupełnienie odbywa się jedynkami.
C/C++ - nazwy, słowa kluczowe, zmienne, typy proste,
stałe,
operatory
, wyraŜenia, instrukcja przypisania.
Operatory - operatory specjalne
=
przypisanie (prawej strony do lewej)
()
zwiększenie priorytetu
[]
dostęp do elementu tablicy
.
dostęp do pola struktury, unii, zmiennej lub metody obiektu,
-
> dostęp do pól struktury przez wskaźnik
&
udostępnienie adresu zmiennej
*
udostępnienie wartości spod adresu
C/C++ - nazwy, słowa kluczowe, zmienne, typy proste,
stałe,
operatory
, wyraŜenia, instrukcja przypisania.
Operatory specjalne c.d.
,
wiązanie wyraŜeń np.
x=(y=4,y+1);
oznacza, Ŝe zanim zostanie wykonana instrukcja
x=y+1,
zostanie wykonana instrukcja
y=4;
sizeof
udostępnienie długości zmiennej lub specyfikatora typu (w
bajtach) np.
float x;
dlugosc1 = sizeof x;
dlugosc2 = sizeof(int); // tu koniecznie
// w nawiasach
(typ)
rzutowanie typów (określenie typu wartości wyraŜenia)
int
x=5,y=2;
float z;
z=(float)x/y; //je
ś
li wynik ma by
ć
rzeczywisty!
C/C++ - nazwy, słowa kluczowe, zmienne, typy proste,
stałe,
operatory
, wyraŜenia, instrukcja przypisania.
przykład
Operatory specjalne c.d.
?:
wyraŜenie warunkowe, postaci
z=x>y?x:y;
(jeŜeli
x
jest większe od
y
to
z
przypisz wartość
x
w przeciwnym
wypadku
z
przypisz wartość
y
).
Operatory złoŜone (skróty)
+= *= /= %= <<= >>= &= ^= |=
Operatory powyŜsze stosuje się w celu skrócenia zapisu operacji i tak np.
x+=2;
// oznacza wykonanie operacji
x=x+2;
x%=2;
// oznacza wykonanie operacji
x=x%2;
C/C++ - nazwy, słowa kluczowe, zmienne, typy proste,
stałe,
operatory
, wyraŜenia, instrukcja przypisania.
Operatory - priorytety
najwyŜszy
() []
-
> .
! ~ +
-
++
-- & *
sizeof (typ)
* / %
+
-
(dwuargumentowe)
<< >>
< <= > >=
== !=
&
^
|
&&
||
?:
= *= /= %= += -= &= ^= |= <<= >>=
najniŜszy
,
x=4>>2/3;
x=????
x=8>>1+1;
x=???
WyraŜenia
WyraŜenie jest kombinacją stałych, zmiennych, wywołań funkcji oraz
operatorów. WyraŜenia są konstruowane zgodnie z zasadami algebry.
Przykład
c/(i+f)*d-sin(x)+0.5
C/C++ - nazwy, słowa kluczowe, zmienne, typy proste,
stałe, operatory,
wyraŜenia
, instrukcja przypisania.
zmienne
funkcja
stała
WyraŜenia c.d.
C/C++ - nazwy, słowa kluczowe, zmienne, typy proste,
stałe, operatory,
wyraŜenia
, instrukcja przypisania.
Podczas obliczania wartości wyraŜeń, w trakcie wykonywania działań,
następuje automatyczna konwersja typów jednego z operandów tak, aby
były jednakowego typu – bez utraty informacji.
char ch;int i; float f;double d;
ch/i + f*d – f+i;
int
double
float
double
double
C/C++ - nazwy, słowa kluczowe, zmienne, typy proste,
stałe, operatory, wyraŜenia,
instrukcja przypisania
.
Instrukcja przypisania
W instrukcji przypisania następuje przypisanie wartości wyraŜenia
zmiennej postaci:
wynik=c/(i+f)*d-sin(x)+0.5;
MoŜliwe jest przypisanie wielokrotne postaci:
a=b=c=0;
wykorzystywane np. do zerowania zmiennych względnie ich
inicjalizacji tą samą wartością.
C/C++ - nazwy, słowa kluczowe, zmienne, typy proste,
stałe, operatory, wyraŜenia,
instrukcja przypisania
.
Instrukcja przypisania –
skutki automatycznej konwersji typów
3 bajty (od najstarszego)
int (32 bity)
char
2 bajty (od najstarszego)
int (32 bity)
short int
zaokrąglenie (mniejsza precyzja)
long double
double
zaokrąglenie (mniejsza precyzja)
double
float
starszy bajt
short int
char
wynik jest ujemny, jeśli wartość >127
unsigned char
signed char
Utrata informacji
Typ wyraŜenia
Typ docelowy
przykład