[C++] int czy int32_t?

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Macok
Sędziwy Jeż
Sędziwy Jeż
Posty: 85
Rejestracja: 12 sty 2008, 13:40
Płeć: Mężczyzna
Wersja Ubuntu: 7.04
Środowisko graficzne: GNOME

[C++] int czy int32_t?

Post autor: Macok »

Jaka jest różnica między zapisem int a int32_t?
Nie chodzi mi tylko o ten konkretny zapis, ale także o takie jak unsigned int i uint32_t itd.
Jest to tylko kwestia upodobań?
Awatar użytkownika
Hauleth
Wytworny Kaczor
Wytworny Kaczor
Posty: 382
Rejestracja: 18 sie 2008, 17:43
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86

Odp: [C++] int czy int32_t?

Post autor: Hauleth »

praktycznie tak.
Jeśli problem rozwiązany dodaj na początku tematu [SOLVED].

Biblioteka do C++ - Bust Lib: http://code.google.com/p/bust/
Macok
Sędziwy Jeż
Sędziwy Jeż
Posty: 85
Rejestracja: 12 sty 2008, 13:40
Płeć: Mężczyzna
Wersja Ubuntu: 7.04
Środowisko graficzne: GNOME

Odp: [C++] int czy int32_t?

Post autor: Macok »

Tyle to i ja wiem :-)
Ale czym dokładnie różnią się te zapisy?
Bo jeżeli któryś z nich jest w jakikolwiek sposób lepszy to chciałbym jak najszybciej zacząć wyrabiać sobie dobre nawyki.
adrian5632
Przyjaciel
Przyjaciel
Posty: 259
Rejestracja: 17 gru 2006, 16:07
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: [C++] int czy int32_t?

Post autor: adrian5632 »

Hauleth pisze:praktycznie tak.
Praktycznie, to widać, że się nie znasz...
A teraz odpowiedź: int na jednej platformie może zajmować 16 bitów, a na innej 32. Używając int32_t masz pewność, że zmienna tego typu zajmuje zawsze tę samą wielkość. Analogicznie uint32_t, int64_t i inne podobne typy. Więc - jak widzisz - nie jest to tylko ot takie 'widzimisię'.
[IMG]http://www.ubudsl.com/media/UbuDSL.png[/IMG]
Masz problem z UbuDSL? Nie zapomnij wygenerować i załączyć loga do postu!
Macok
Sędziwy Jeż
Sędziwy Jeż
Posty: 85
Rejestracja: 12 sty 2008, 13:40
Płeć: Mężczyzna
Wersja Ubuntu: 7.04
Środowisko graficzne: GNOME

Odp: [C++] int czy int32_t?

Post autor: Macok »

Dzięki, a którego ty (albo ktoś inny kto też się zna) używasz i radziłbyś używać?
Z tego co piszesz to chyba lepszy będzie ten drugi bo nie ma ryzyka, że jakaś wartość nie zmieści się w zmiennej.
adrian5632
Przyjaciel
Przyjaciel
Posty: 259
Rejestracja: 17 gru 2006, 16:07
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: [C++] int czy int32_t?

Post autor: adrian5632 »

Macok pisze:Dzięki, a którego ty (albo ktoś inny kto też się zna) używasz i radziłbyś używać?
Z tego co piszesz to chyba lepszy będzie ten drugi bo nie ma ryzyka, że jakaś wartość nie zmieści się w zmiennej.
Jeśli piszesz proste aplikacje, nie działasz np. na 'specjalnie' wysokich liczbach, to możesz spokojnie używać zwykłych typów int i tym podobnych. Jeśli jednak aplikacja wymaga obsługi konkretnych liczb, tudzież musisz mieć pewność, że dane liczby nie wyjdą poza zakres, używaj wtedy ściśle określonych typów.

Acha, do tego, co teraz napiszę, nie mam 100-procentowej pewności, ale te typy ściśle określone nie są zbyt przenośne (czyt. nie masz całkowitej pewności, że typy takie zostały zdefiniowane na danej platformie, tudzież wymagają dołączenia odpowiedniego pliku nagłówkowego z ich definicjami).

A tak poza typami int32_t i podobnymi, jeśli używasz specyficznej biblioteki, zapewne definiuje ona własne typy, jak np. Qt4 zawiera takie typy, jak qint16, qint32, qint64 i tym podobne.
[IMG]http://www.ubudsl.com/media/UbuDSL.png[/IMG]
Masz problem z UbuDSL? Nie zapomnij wygenerować i załączyć loga do postu!
Macok
Sędziwy Jeż
Sędziwy Jeż
Posty: 85
Rejestracja: 12 sty 2008, 13:40
Płeć: Mężczyzna
Wersja Ubuntu: 7.04
Środowisko graficzne: GNOME

Odp: [C++] int czy int32_t?

Post autor: Macok »

Dzięki o taką odpowiedź mi chodziło :)
Pozdrawiam!
Awatar użytkownika
el.pescado
Zakręcona Traszka
Zakręcona Traszka
Posty: 734
Rejestracja: 26 maja 2005, 11:43
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [C++] int czy int32_t?

Post autor: el.pescado »

Acha, do tego, co teraz napiszę, nie mam 100-procentowej pewności, ale te typy ściśle określone nie są zbyt przenośne (czyt. nie masz całkowitej pewności, że typy takie zostały zdefiniowane na danej platformie, tudzież wymagają dołączenia odpowiedniego pliku nagłówkowego z ich definicjami).
Typy te są zadeklarowane w nagłówku stdint.h, będącego częścią standardu C99.
mikolajs
Wytworny Kaczor
Wytworny Kaczor
Posty: 352
Rejestracja: 15 paź 2008, 18:30
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: [C++] int czy int32_t?

Post autor: mikolajs »

Wydaje mi się, że typów tych warto używać w przypadku potrzeby przenoszenia programu między platformami o różnej liczbie bitów.
Awatar użytkownika
el.pescado
Zakręcona Traszka
Zakręcona Traszka
Posty: 734
Rejestracja: 26 maja 2005, 11:43
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [C++] int czy int32_t?

Post autor: el.pescado »

Ogólnie, typów ścićle określonych używa się w dwóch przypadkach:

1. Kiedy ma się ścisłe wymagania dotyczące zakresu zmiennych, np. kolor piksela w modelu RGB o 24-bitowej głębi:

Kod: Zaznacz cały

struct rgb {uint8_t r; uint8_t g; uint8_t b};
W tym przypadku każda współrzędna znajduje się w zakresie 0..255, ponadto piksele występują zwykle w dużych ilościach, więc użycie typu uint8_t jest najbardziej odpowiednie.

2. Zachodzi konieczność wymiany danych binarnych z innym programem według ustalonego binarnego schematu (protokoły sieciowe, formaty plików). Np. Nagłówek pliku BMP można przedstawić tak:

Kod: Zaznacz cały

struct BMP_Header {
    uint16_t bfType;
    uint32_t bfSize;
    uint16_t bfReserved1;
    uint16_t bfReserved2;
(...)
    uint32_t biClrUsed;
    uint8_t biClrImportant;
    uint8_t biClrRotation;
    uint16_t biReserved;
};
Oprócz wielkości zmiennych, trzeba też pamiętać o endiannes.

Poza tym, użycie "standardowych" typów (int, short, long, long long) jest zwykle wystarczające.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 10 gości