[C++] int czy int32_t?
-
- 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?
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ń?
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ń?
- Hauleth
- 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?
praktycznie tak.
Jeśli problem rozwiązany dodaj na początku tematu [SOLVED].
Biblioteka do C++ - Bust Lib: http://code.google.com/p/bust/
Biblioteka do C++ - Bust Lib: http://code.google.com/p/bust/
-
- 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?
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.

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.
-
- 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?
Praktycznie, to widać, że się nie znasz...Hauleth pisze:praktycznie tak.
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!
Masz problem z UbuDSL? Nie zapomnij wygenerować i załączyć loga do postu!
-
- 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?
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.
Z tego co piszesz to chyba lepszy będzie ten drugi bo nie ma ryzyka, że jakaś wartość nie zmieści się w zmiennej.
-
- 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?
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.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.
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!
Masz problem z UbuDSL? Nie zapomnij wygenerować i załączyć loga do postu!
-
- 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?
Dzięki o taką odpowiedź mi chodziło 
Pozdrawiam!

Pozdrawiam!
- el.pescado
- 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?
Typy te są zadeklarowane w nagłówku stdint.h, będącego częścią standardu C99.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).
-
- 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?
Wydaje mi się, że typów tych warto używać w przypadku potrzeby przenoszenia programu między platformami o różnej liczbie bitów.
- el.pescado
- 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?
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:
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:
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.
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};
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;
};
Poza tym, użycie "standardowych" typów (int, short, long, long long) jest zwykle wystarczające.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 10 gości