Samouczek C ++ na temat obsługi pływaków i Ints

Int jest liczbą całkowitą podobną do 47 bez kropki dziesiętnej. Nie możesz mieć 4,5 dzieci lub zapętlić 32,9 razy. Możesz mieć 25,76 USD, jeśli używasz liczby zmiennoprzecinkowej. Dlatego podczas tworzenia programu musisz zdecydować, jakiego typu użyć.

To właśnie robią niektóre języki skryptowe? Ponieważ jest nieefektywny, zmiennoprzecinkowe zajmują więcej pamięci i są generalnie wolniejsze niż ints. Ponadto nie można łatwo porównać dwóch pływaków, aby sprawdzić, czy są one równe, jak w przypadku ints.

Aby manipulować liczbami, musisz przechowywać je w pamięci. Ponieważ wartość można łatwo zmienić, nazywa się ją zmienną.

The kompilator który czyta twój program i konwertuje go na kod maszynowy, musi wiedzieć, jaki jest typ, tj. czy jest to int czy float, więc zanim Twój program użyje zmiennej, musisz ogłosić to.

Zauważysz, że zmienna Licznik jest ustawiona na 0. Jest to opcjonalna inicjalizacja. Bardzo dobrą praktyką jest inicjowanie zmiennych. Jeśli nie zainicjujesz, a następnie użyjesz ich w kodzie bez ustawienia wartości początkowej, zmienna rozpocznie się od losowej wartości, która może „złamać” kod. Wartość będzie taka, jaka była w pamięci podczas ładowania programu.

instagram viewer

Jaka jest największa liczba, jaką int może przechowywać?. To zależy od rodzaju procesor ale jest ogólnie akceptowany jako 32 bity. Ponieważ może pomieścić prawie tyle samo wartości ujemnych, co dodatnich, zakres wartości wynosi +/- 2-32 do 232 lub -2 147 483 648 do +14 147 483 647.

To jest dla podpisanego int, ale jest też niepodpisany int, który zawiera zero lub dodatni. Ma zakres od 0 do 4 294 967 295. Tylko pamiętaj - bez znaku int nie potrzebują przed nimi znaku (jak + lub -1), ponieważ są zawsze dodatnie lub 0.

Istnieje krótszy typ int, zwany przypadkowo short int, który wykorzystuje 16 bitów (2 bajty). Jest to liczba z zakresu od -32768 do +32767. Jeśli używasz dużej liczby liczb całkowitych, możesz zaoszczędzić pamięć, używając krótkich liczb wewnętrznych. Nie będzie szybciej, mimo że jest o połowę mniejszy. Procesory 32-bitowe pobierają wartości z pamięci w blokach po 4 bajty naraz. To znaczy. 32 bity (stąd nazwa 32-bitowy procesor!). Pobieranie 16 bitów nadal wymaga pobierania 32-bitowego.

Nazywa się dłuższy 64 bit długo długo w C. Niektóre kompilatory C ++, które nie obsługują tego typu bezpośrednio, używają alternatywnej nazwy - np. zarówno Borland, jak i Microsoft _int64. Ma on zakres od -9223372036854775807 do 9223372036854775807 (podpisany) i od 0 do 18446744073709551615 (niepodpisany).

O ile nie zajmujesz się programowaniem naukowym z bardzo dużymi lub małymi liczbami, użyjesz podwójnych dla większej precyzji. Pływaki są dobre dla 6 cyfr dokładności, ale podwajają oferują 15.

Rozważ numer 567,8976523. Jest to poprawna wartość zmiennoprzecinkowa. Ale jeśli wydrukujemy go za pomocą tego kodu poniżej, zauważysz brak precyzji. Liczba ma 10 cyfr, ale jest przechowywana w zmiennej zmiennoprzecinkowej z zaledwie sześcioma cyframi dokładności.

Widzieć O wejściu i wyjściu szczegółowe informacje na temat działania cout i korzystania z precyzji. Ten przykład ustawia dokładność wyjściową na 8 cyfr. Niestety zmiennoprzecinkowe mogą pomieścić tylko 6, a niektóre kompilatory wydają ostrzeżenie o zamianie podwójnego na zmiennoprzecinkowe. Po uruchomieniu drukuje się 567.89764

Jeśli zmienisz precyzję na 15, zostanie wydrukowany jako 567,897644042969. Całkiem różnica! Teraz przenieś przecinek dziesiętny dwa w lewo, aby wartość wynosiła 5.678976523 i uruchom ponownie program. Tym razem wyprowadza 5.67897653579712. Jest to dokładniejsze, ale wciąż inne.

Jeśli zmienisz typ wartości na podwójną, a dokładność na 10, wydrukuje wartość dokładnie taką, jak zdefiniowano. Zasadniczo liczby zmiennoprzecinkowe są przydatne w przypadku małych liczb niecałkowitych, ale przy więcej niż 6 cyfrach należy używać liczb podwójnych.

Pisanie oprogramowania komputerowego nie byłoby zbyt przydatne, gdybyś nie mógł dodawać, odejmować itp. Oto przykład 2.

Oprócz dodawania możesz wykonywać odejmowanie, mnożenie i dzielenie. Wystarczy użyć + do dodawania, - do odejmowania, * do mnożenia i / do dzielenia.

W przypadku liczb zmiennoprzecinkowych nie masz kontroli nad liczbą wyświetlanych miejsc dziesiętnych, chyba że ustawisz dokładność, jak pokazano wcześniej.

Teraz szerokość, wyrównanie, liczba miejsc po przecinku i znaki mogą być ustawione przez cout obiekt i iomanip obejmują funkcje plików.

Tysiące separatorów jest nieco bardziej skomplikowane. Są ustawiane z lokalizacji komputera PC. Lokalizacja zawiera informacje istotne dla twojego kraju - takie jak symbole walut i kropka dziesiętna oraz separatory tysięcy. W Wielkiej Brytanii i USA liczba 100,98 używa kropki dziesiętnej. jako przecinek dziesiętny, podczas gdy w niektórych krajach europejskich jest to przecinek, więc 5,70 € oznacza cenę 5 euro i 70 centów.

tworzy obiekt mpunct który jest odniesieniem do moneypunct klasa szablonów. Zawiera informacje o określonych ustawieniach regionalnych - w naszym przypadku tysięcy_sep () Metoda zwraca znak użyty dla separatora tysięcy.

Uwaga Wydaje się, że istnieją rozbieżności między różnymi kompilatorami co do sposobu cout.imbue zachowuje się. W Visual C ++ 2005 Express Edition obejmowało to separatory. Ale ten sam kod z Microsoft Visual C ++ 6.0 nie!

Jeśli użyjesz jednego z tych dwóch trybów formatowania poprzez cout.setf następnie precyzja() ustawia liczbę miejsc po przecinku po przecinku (nie ogólną liczbę cyfr), ale tracisz formatowanie tysięcy. Również końcowe zera (jak zostały włączone przez ios_base:: showpoint ) zostaną automatycznie włączone bez potrzeby punkt pokazowy.

Można się spodziewać czegoś takiego jak wartość 11,0909090909. W rzeczywistości wartość wynosi 11. Dlaczego to? ponieważ wyrażenie po prawej stronie (znany jako wartość r) jest liczbą całkowitą / liczbą całkowitą. Używa więc arytmetyki liczb całkowitych, która wyrzuca część ułamkową i przypisuje 11 do f. Zmieniam na

W C nie ma takiego typu jak bool. Wyrażenia w C opierały się na tym, że zero jest fałszem lub niezerowe to prawda. W C ++ typ bool może przyjąć wartości prawdziwe lub fałszywy. Te wartości są nadal równoważne 0 i 1. Gdzieś w kompilatorze będzie miał

A przynajmniej tak to działa! Dwie poniższe linie są prawidłowe bez rzucania, więc za kulisami boole są domyślnie konwertowane na ints, a nawet mogą być zwiększane lub zmniejszane, chociaż jest to bardzo zła praktyka.

If nadal będzie robił if, ponieważ zła zmienna jest niezerowa, ale jest to zły kod i należy tego unikać. Dobrą praktyką jest używanie ich zgodnie z przeznaczeniem. if (! v) jest poprawny C ++, ale wolę bardziej wyraźny if (v! = 0). To jednak kwestia gustu, a nie musi zrobić dyrektywa.

kompilator lepiej łapie błędy w czasie kompilacji niż użytkownik w czasie wykonywania

instagram story viewer