• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kiedy używać nowych typów danych c++

Object Storage Arubacloud
0 głosów
709 wizyt
pytanie zadane 10 sierpnia 2020 w C i C++ przez Sevence Początkujący (280 p.)
edycja 10 sierpnia 2020 przez Sevence

Cześć,

Jestem nowym studentem C++ i podczas zapoznawania się z nowymi typami utknąłem. Mam parę pytać na które nie mogę znaleźć jasnej dla mnie odpowiedzi, dlatego postanowiłem napisać tu. 

 

Od C++11 weszły nowe typy danych. Chciałbym zrozumieć, kiedy warto z nich skorzystać.

Typy: int8_t, int16_t, int32_t, int64_t

Typy: int_fast8_t, int_fast16_t, int_fast32_t, int_fast64_t, 

Typy: int_least8_t, int_least16_t, int_least32_t, int_least64_t,

 

Parę pytań odnośnie nowych typów:

Czym się różni np. typ int od int32_t?

Czy w najnowszych standardach powinno się korzystać tylko z tych nowych typów?

Z tego co się orientuje typ int ma ilość bitów w zależności od kompilatora, także po co tyle nowych typów?

Kiedy warto skorzystać z nowych typów? 

Przykładowo mam system który działa tylko w architektorzy 32 bitowej zatem czy mam używać zawsze int32_t?

Czym się różnią te nowy typy od siebie  int32_t vs int_fast32_t vs int_least32_t?

 

Będę bardzo wdzięczny za wyjaśnienie tego zagadnienia osobie która się dopiero uczy. 

Zależy mi aby wypowiedział się ktoś doświadczony w temacie. 

komentarz 10 sierpnia 2020 przez manjaro Nałogowiec (37,390 p.)
Fajnie byłoby jakbyś nie zmieniał domyślnych ustawień zcionki.
komentarz 10 sierpnia 2020 przez Sevence Początkujący (280 p.)
To po co forum udostępnia taką opcją skoro nie można z niej korzystać?
komentarz 10 sierpnia 2020 przez Oscar Nałogowiec (29,290 p.)

@Sevence,
 to nie są żadne nowy typy danych, to wszystko było w zwykłym C w pliku stdint.h (no, może bez tych 64bit)

komentarz 11 sierpnia 2020 przez j23 Mędrzec (194,920 p.)

@Oscar, "nowe" w C++ (w sensie, że są częścią standardu).

1 odpowiedź

+1 głos
odpowiedź 10 sierpnia 2020 przez tangarr Mędrzec (154,780 p.)

Typy intX_t mają dokładnie X bitów
Typy int_fastX_t są najszybszymi (dla procesora) typami o długości przynajmniej X bitów
Typy int_leastX_t są najmniejszymi typami zawierającymi przynajmniej X bitów

Dokumentacja https://en.cppreference.com/w/cpp/types/integer

Rozmiary standardowych typów (char, short, int, long, long long) są zależne od implementacji i platformy. Utrudnia to pisanie programów wieloplatformowych.
Typy intX_t są szczególnie pomocne podczas projektowania binarnych formatów danych (dodatkowo trzeba pamiętać o różnej kolejności zapisu danych na różnych platformach - little endian/big endian)

komentarz 10 sierpnia 2020 przez Sevence Początkujący (280 p.)
@tangarr Jak tworzę aplikację która jest uruchamiana w środowisku 32 bitowym to warto użyć tych precyzyjnych typów? Jest jakaś różnica względem wydajności int vs int32_t lub int32_t vs int_fast32_t?
1
komentarz 10 sierpnia 2020 przez tkz Nałogowiec (42,000 p.)
edycja 10 sierpnia 2020 przez tkz

Jeszcze dodam, że dla niestandardowych maszyn, na przykład 36 bitowych maszyn int8_t nie istnieje. Warto doczytać o czymś takim jak padding w C/C++. 

Najczęściej z precyzyjnym wyrażeniem długości typu spotkasz się w systemach wbudowanych.

#include <cinttypes>
int main()
{
    int a=8;
    int_fast64_t v=8;
}
main:
        push    rbp
        mov     rbp, rsp
        mov     DWORD PTR [rbp-4], 8
        mov     QWORD PTR [rbp-16], 8
        mov     eax, 0
        pop     rbp
        ret

Jeżeli gdzieś strzelę gafę, to proszę poprawić. Przy int_fast procesor rozkłada zapis zmiennej na 16 bitów, co przy czytaniu daje pełną ramkę, co przyśpiesza czyatanie z pamięci cash procesora. 

komentarz 10 sierpnia 2020 przez tangarr Mędrzec (154,780 p.)
Jeżeli dokładny rozmiar danych cię nie interesuje to używaj standardowych typów.

Podobne pytania

+3 głosów
1 odpowiedź 233 wizyt
pytanie zadane 7 lutego 2023 w SQL, bazy danych przez zbiku25 Bywalec (2,940 p.)
+1 głos
1 odpowiedź 742 wizyt
pytanie zadane 4 stycznia 2020 w C# przez startCoding Obywatel (1,210 p.)
0 głosów
1 odpowiedź 448 wizyt
pytanie zadane 13 marca 2017 w C i C++ przez Deloryn Bywalec (2,060 p.)

92,547 zapytań

141,388 odpowiedzi

319,506 komentarzy

61,931 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...