typy wzorów c cpplogo

C/C++ – podstawowe typy zmiennych

Każdy programista rozpoczynający swoją przygodę z programowaniem w języku C++ musi poznać zmienne, ich typy oraz zasięg.
Jest to niezwykle ważne, by umiejętnie je dobierać oraz wykorzystywać, a także znać właściwości, które mogą nam pomóc w naszej karierze programisty.
Omówię dzisiaj podstawy, a także ciut bardziej rozbuduję to, w jaki sposób możemy daną zmienną wykorzystać.

 

Czym jest zmienna?

W dużym i niezbędnym skrócie można powiedzieć, że zmienną w informatyce charakteryzują trzy podstawowe wartości:
– nazwa
– adres
– wartość

Dodatkowo w językach ze statycznym typowaniem, jak C++ właśnie, musimy określić typ naszej zmiennej, aby móc ją poprawnie zadeklarować.
Przykładowo zmienna:

int someVariable = 10;

To zmienna typu integer, przechowująca wartości całkowicie, o nazwie someVariable, do której przypisano wartość 10, a sama jest zagnieżdżona gdzieś w pamięci naszego komputera, zajmując przy tym 4 bajty (dokładny adres pomoże nam sprawdzić operator &).

 

Nazewnictwo zmiennych

Aby nazwać daną zmienną, musimy zmieścić się w pewnych ramach i trzymać określonych zasad.
Czego nam NIE wolno zrobić:
– używać pustych znaków, np. spacji (int some Variable)
– zaczynać nazw od liczb (int 123someVariable)
– nadawać jako nazwę słowo kluczowe (int switch)
– korzystać ze znaków specjalnych (int some!Variable)
– używać polskich liter (int śomęVąriabłę)
– łączyć zmiennych ze wskaźnikami (int someVariable, *somePointer)
– nadawać dwóch takich samych nazw (int someVariable i float someVariable)

Są to zakazy, których trzeba przestrzegać, jeśli chcemy, aby nasz program się poprawnie skompilował.

Z drugiej strony, warto też znać dobre nawyki, jakie złapać powinien każdy programista przy nadawaniu nazw zmiennym:
– zapisywać je małymi literami (int some)
– w przypadku kilku wyrazów stosować jasny i czytelny przekaz (int someVariable lub int some_variable)
– wiele zmiennych zapisywać w jednej linii (int a, b, c, d, e)
– jako nazwę stosować klarowny opis przeznaczenia (int enemyHealth)

Kilka wzorców śmiało można by jeszcze wymienić, jednak to na tych wymienionych wyżej nie tyle należy, ile trzeba się wręcz skupić, zaczynając pisać w C++.
Należy też pamiętać, że wszystkie podane wyżej informacje składają się na coś, co nazywamy deklaracją zmiennej. Są to słowa, do których gęsto i często będziemy wracać.

 

Typy zmiennych

Zanim przejdę do właściwego omówienia, trzeba wspomnieć tutaj o przedrostkach signed oraz unsigned.
Określają nam, jaki przedział liczb jest w stanie przechować dana zmienna.

O ile każda deklaracja domyślnie jest ze znakiem, co oznacza, że signed int someVariable równe jest int someVariable.
Dzięki temu wiemy, że dana zmienna przechowuje liczby z zakresu od -2147483648, do 2147483647.

W przypadku unsigned int someVariable sytaucja się drastycznie zmienia, a zakres to: 0 do 4294967295.

Należy o tym pamiętać, aby umiejętnie i z głową korzystać z danego przedrostka. W końcu aplikacja służąca do pomiaru temperatury nie może operować jedynie na liczbach dodatnich!

 

integer

Podstawowy typ zmiennej przechowujący wartości całkowite.
Jest on tak rozpoznawalny i powszechnie stosowany, że nawet osoby niezwiązane z informatyką, czy stricte programowanie, niejednokrotnie doskonale go kojarzą!
Oto jego krótka charakterystyka:

Deklaracja: int someVariable = 10;
Rozmiar: 4 bajty (32 bity)
Typ przechowywanych danych: liczby całkowite

typy wzorów c ++ - integrer

Większość operacji początkujący programista będzie przeprowadzał właśnie na nim.
Trzeba też pamiętać, że rozmiar zmiennej zależny jest w dużej mierze od architektury naszego sprzętu oraz samego kompilatora, dlatego może się zdarzyć, że ktoś napotka na int o rozmiarze nie 4, a 2 bajtów.

Z tego samego też powodu, bardzo często int i long są sobie równoznaczne.
W moim wypadku dane oparte są na wyniku, jaki zwróciła funkcja sizeof() dla każdej zmiennej, a także GCC 7.2.0.

Warto jednak wiedzieć, że nie jest to jedyna możliwość deklaracji typu całkowitego w języku C++, istnieją także:

char
– Deklaracja: char someVariable = 122; lub char someVariable = 'z';
– Rozmiar: 1 bajt (8 bitów)
– Typ przechowywanych danych: liczby całkowite lub pojedyncze znaki

typy wzorów c ++ - char

short int
– Deklaracja: short someVariable = 255; lub short int someVariable = 255;
– Rozmiar: 2 bajty (16 bitów)
– Typ przechowywanych danych: liczby całkowite

long int
– Deklaracja: long someVariable = 10; lub long int someVariable = 10;
– Rozmiar: 8 bajtów (64 bity)
– Typ przechowywanych danych: liczby całkowite

typy wzorów c ++ - long int

Spotkać można także zapis long long int, który wynika z wymienionej wcześniej zależności, że sam long może (lecz nie musi) być równy 4 bajtom.
Oczywiście do każdego typu śmiało możemy dodać przedrostek unsigned, wedle potrzeb.

Dziwić może także obecność typu char, o którym szerzej rozpiszę się niżej – coby jednak nie mówić, jest to typ, który także przechowuje liczby całkowite, w końcu kod ASCII po coś istnieje.

 

float

Po przeczytaniu wcześniejszych wersów bardzo szybko nasuwa się myśl, co jeśli mam liczbę po przecinku? Np. 3.14? Co w danej sytuacji mogę zrobić?

Zadeklarowanie zmiennej int w taki sposób: int someVariable = 3.14 spowoduje, że wszystko, co po przecinku zostanie po prostu ucięte. Nie zaokrąglone – ucięte!
A to dlatego, że typ ten przechowuje jedynie liczby całkowite.

Z pomocą przychodzi nam float – typ zmiennoprzecinkowy.
To dzięki niemu oraz znakowi kropki, będącego uosobieniem przecinka, możemy zapisywać znacznie dokładniej wyniki naszych obliczeń.
Oto krótka charakterystyka:

Deklaracja: float fpUnit = 3.14 lub float fpUnit = 0.14 lub float fpUnit = .14;
Rozmiar: 4 bajty (32 bity)
Precyzja: 6-7 miejsc po przecinku
Typ przechowywanych danych: liczby zmiennoprzecinkowe

typy wzorów c ++ - float

Czy to oznacza, że do float nie mogę przypisać po liczby całkowitej? Albo, dlaczego tylko .14 a nie 0.14?
Ależ nikt nam nie broni stosowania float w formie int. Jeśli jednak wiemy, że nie będziemy korzystać z przecinka, jaki ma to sens?
Wprowadza to tylko niepotrzebny zamęt i swego rodzaju utrudnia czytanie kodu.
Poza tym float powstał z myślą o precyzyjnych obliczeniach, do nawet 20. miejsc po przecinku!

A co z .14? Odpowiedź jest prosta.
Skoro jest kropka, a przed nią nie ma żadnej wartości, to kompilator po prostu wie, że tam stoi zwykłe 0.
Jest to usprawnienie pisania kodu na poziomie z wykorzystanie i++, w miejsce i+1.

Czy istnieje możliwość zwiększenia precyzji? Jak najbardziej!
Oto przykłady z krótkim opisem:

double
– Deklaracja: double fpUnit = 3.14 lub double fpUnit = 0.14 lub double fpUnit = .14;
– Rozmiar: 8 bajtów (64 bity)
– Precyzja: 15-16 miejsc po przecinku
-Typ przechowywanych danych: liczby zmiennoprzecinkowe

typy wzorów double

long double
– Deklaracja: long double fpUnit = 3.14 lub long double fpUnit = 0.14 lub long double fpUnit = .14;
– Rozmiar: 16 bajtów (128 bitów)
– Precyzja: 33-36 miejsc po przecinku
– Typ przechowywanych danych: liczby zmiennoprzecinkowe

typy wzorów long double

Jak widać – ze zwiększaniem precyzji naszych obliczeń, znacznie wzrasta także rozmiar samej zmiennej.
Dlatego tak ważne jest stosować odpowiedni typ, żeby nie zabić optymalizacji naszego kodu!

Dodatkowo możemy także wspomnieć o precyzji naszych obliczeń i tym jak mają być traktowane, np. zaokrąglanie do dwóch miejsc po przecinku.
Coś takiego jest możliwe, a do tego bardzo często i gęsto się z tego korzysta – my dzisiaj tylko o tym wspomnimy, na szerszy opis przyjdzie czas przy operacjach matematycznych.

 

char

Mimo że przelotnie o nim wspomniałem, przy typie całkowitym, to jego pierwotne przeznaczenie jest zgoła inne.
Owszem, przechowuje on liczby z zakresu -128 do 127, ale jest to typ znakowy.

Liczby robią tutaj reprezentację kodu ASCII. To dzięki nim nasz program potrafi przechowywać pojedyncze litery czy znaki specjalne.
Ważne jest, aby zapamiętać, że tylko pojedyncze znaki.
Do całych łańcuchów wykorzystuje się tablice albo typ string, którego dzisiaj nie będę omawiał, zasługuje on na swój osobny artykuł.

Krótka charakterystyka char wygląda następująco:

Deklaracja: char z = 'z'; lub char z = 122;
Rozmiar: 1 bajt (8 bitów)
Typ przechowywanych danych: pojedyncze znaki lub liczby całkowite

Elastyczność i szeroka gama zastosowań, polegająca głównie na umiejętnościach programisty, sprawia, że char jest podstawowym typem danych, który każdy powinien znać.

 

bool

Jest typem logicznym, bardzo prostym w swoim zastosowaniu.
Oznacza albo prawdę, albo fałsz. Czysto teoretycznie w języku C++ wszystko większe od 0 jest prawdą, więc równie dobrze można wykorzystać typ int, char, a nawet jakby ktoś chciał, to long double.

Jednak znaczącą ich wadą jest rozmiar, bowiem boolean zajmuje zaledwie jeden bajt. Więcej mu po prostu nie potrzeba.
Dodatkowo nikt nie zmusza nas do korzystania z 0 i 1! Oto dlaczego:

Deklaracja: bool onlyTrue = true; lub bool onlyTrue = 1;
Rozmiar: 1 bajt (8 bitów)
Typ przechowywanych danych: logiczna prawda lub fałsz

typy wzorów bool

Osobiście nie jest zwolennikiem słownego zapisywania tych wartości, niemniej jednak bool nam to umożliwia w prosty i przejrzysty sposób.

 

Podsumowanie

Typów zmiennych oraz wariacji na ich temat jest znacznie więcej.
W tym artykule pokrótce przedstawiłem najważniejsze informacje o podstawowych typach, jakie powinien znać każdy programista.
W przyszłości będzie należało także wspomnieć o string, o tym jako można go pominąć, dlaczego C++ jest znacznie bardziej przejrzyste, niż C, o zasięgach zmiennych, właściwościach tych niewyzerowanych i wiele, wiele więcej.

Jak to mówią: stay tuned and cheers!

TechPolska362 Posts

TechPolska - Zespół, który tworzy naszą stronę składa się głównie z młodych amantów rozwiązań technologicznych oraz informatyki. W swoich treściach stawiamy przede wszystkim na obiektywność i rzetelność, co niejednokrotnie zostało docenione przez naszych czytelników.

4 komentarze

  • Jak uczyć się C++? | Nauka języka programowania C++ Reply

    19 grudnia 2019 at 13:41

    […] w przystępny sposób. Przykładem może być chociażby ten artykuł o zmiennych w C++ http://techpolska.pl/cpp-typy-zmiennych/. Ponadto niezwykle użyteczne mogą okazać się internetowe kursy (chociaż nie każdy jest fanem […]

  • Czym jest C++? | PCgamer.pl Reply

    19 grudnia 2019 at 14:51

    […] typy zmiennych C++ https://techpolska.pl/cpp-typy-zmiennych/ i inne ważne elementy tego języka nie będą nam wtedy sprawiały aż takich problemów, jak […]

  • Co trzeba wiedzieć o C++? | Niezgrani.pl Reply

    25 marca 2020 at 09:11

    […] znany też jako CPP, to stosunkowo wiekowy język programowania, który przez wielu jest już uznawany za niszowy. Mimo […]

  • Wszystko co musisz wiedzieć o C++ | ZaWinklem Reply

    26 marca 2020 at 07:45

    […] to stosunkowo stary język programowania, który jest też znany pod nazwą CPP. Programiści w dzisiejszych czasach stawiają na nieco nowsze języki, jednak nie oznacza to, że […]

Zostaw komentarz

Login

Welcome! Login in to your account

Remember me Lost your password?

Lost Password