Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

koliko koristite unsigned, short, bool itd?

[es] :: C/C++ programiranje :: koliko koristite unsigned, short, bool itd?

[ Pregleda: 2997 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon koliko koristite unsigned, short, bool itd?23.02.2004. u 08:39 - pre 245 meseci
U poslednje vreme sam počeo malo više da se bavim C++-om, pa su usput počela da mi se nameću pitanja tipa: da li staviti unsigned ili ne, da li koristiti short ili ne, da li koristiti bool ili int?

unsigned?
Naravno početni razlog je jasan: stavi unsigned ako očekuješ samo pozitivne vrednosti, a možeš duplirati opseg u pozitivnom; ali onda pazi da negde ne padne ispod nule, jer te čeka iznenađenje. U jednom trenutku mi je izgledalo bolje da, ako mi već treba veći int, stavim long a pozitivnost da proveravam kroz kod, tako da pada u vodu početni razlog. Osim ako ti treba unsigned long, za zaista velike brojeve. Čini mi se da je najkorisniji unsigned char aka BYTE.

short?
Hm, pa tu ne vidim neku specijalnu korist. Kao štediš memoriju, neki bajt. Ima veze ako imaš neke velike nizove pa bajt po bajt... Inače opet samo muka, ako preteraš njegov opseg. Opet izgleda bolje staviti int pa proveravati opseg, ako treba. Da ne kažem da većina standardnih biblioteka gotovo uopšte ne koristi ovaj tip.

bool?
Praktično je izbačen pod win32. Čim uključiš win header, imaćeš samo problema sa ovim tipom jer je sve tamo BOOL (int) pa će kompajler da te zeza za konverziju - da li zaista želiš da ti ovo bude samo bool? itd. Pošto C prihvata int kao uslovni izraz, zaista se postavlja pitanje upotrebe ovog tipa.

Pa, komentari, iskustva itsl su dobrodošli!
 
Odgovor na temu

#Coder
Zagreb

Član broj: 21075
Poruke: 16
193.198.202.*



Profil

icon Re: koliko koristite unsigned, short, bool itd?25.02.2004. u 11:02 - pre 245 meseci
Te atribute za podatke ti ja uopce ne koristim, koristim samo pokazivac far ak mi je kod ogroman, a za drugim nema potrebe (osim u iznimnim slucajevima)....
Mess with the best and die like the rest
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: koliko koristite unsigned, short, bool itd?25.02.2004. u 11:05 - pre 245 meseci
"pokazivac far" ??? Mozes li, 'leba ti, da objasnis o cemu zapravo
pricas? :)
Citat:
Te atribute za podatke ti ja uopce ne koristim, koristim samo
pokazivac far ak mi je kod ogroman, a za drugim nema potrebe (osim u
iznimnim slucajevima)

Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: koliko koristite unsigned, short, bool itd?25.02.2004. u 11:06 - pre 245 meseci
"bool" je STANDARD u C++-u! Ne moze, niti sme da bude "izbacen" na nekoj platformi. Gde si to video da je "bool" tip izbacen sa Windows-a? :)
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: koliko koristite unsigned, short, bool itd?25.02.2004. u 11:11 - pre 245 meseci
http://www.cppreference.com/data_types.html
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: koliko koristite unsigned, short, bool itd?25.02.2004. u 11:20 - pre 245 meseci
Takodje bih dodao da Win32 NIJE C++ :) Win32 API je cisti C.
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
*.vdial.verat.net

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: koliko koristite unsigned, short, bool itd?25.02.2004. u 11:24 - pre 245 meseci
Citat:
leka:
"pokazivac far" ??? Mozes li, 'leba ti, da objasnis o cemu zapravo
pricas? :)
Citat:
Te atribute za podatke ti ja uopce ne koristim, koristim samo
pokazivac far ak mi je kod ogroman, a za drugim nema potrebe (osim u
iznimnim slucajevima)

Covek verovatno programira pod dos-om :)
 
Odgovor na temu

sspasic
Sasa Spasic

Član broj: 3261
Poruke: 175
*.medianis.net

Jabber: sspasic@elitesecurity.org
ICQ: 35454521


Profil

icon Re: koliko koristite unsigned, short, bool itd?25.02.2004. u 11:24 - pre 245 meseci
Citat:
darkosos:

bool?
Praktično je izbačen pod win32. Čim uključiš win header, imaćeš samo problema sa ovim tipom jer je sve tamo BOOL (int) pa će kompajler da te zeza za konverziju - da li zaista želiš da ti ovo bude samo bool? itd. Pošto C prihvata int kao uslovni izraz, zaista se postavlja pitanje upotrebe ovog tipa.


Nisam siguran odakle ti ideja za ovo.
Ako ti neki kompajler pravi problem sa bool-om nije prolem u tipu već u (verovatno) zastarelom kompajleru.
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.microsoft.com



+18 Profil

icon Re: koliko koristite unsigned, short, bool itd?25.02.2004. u 19:49 - pre 245 meseci
Unsigned koristim stalno, prakticno i vise nego obicne intove: cele brojeve koristim za raznorazne indexe, velicine bafera, ofsete, for petlje, i slicno. Ako ne bi koristio unsigned, onda bi program imao problema sa velicinama od preko 2 milijarde (2GB), sto je naravno problem. Znaci signed intove prakticno i da ne koristim, osim ako u pitanju nije neka fizicka vrednost koja moze da bude <0.

Shortovi su korisni kada pakujes informacije u memoriju / disk i bitno ti je kako su one rasporedjene. Ako radis dosta sa memory ili file streamovima obicno su ti potrebni shortovi. Ali slozicu se da u vecini slucaja shortovi nisu neophodni.

Bool koristim (tj BOOL varijantu), ali to je vise semantika - bool je int cije su samo dve vrednosti relevantne (nula, i ne-nula). Bool se koristi da bi se onome ko cita kod dalo do znanja da ne treba da ocekuje da ce neka 'matematika' da se radi nad tom promenljivom.
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon Re: koliko koristite unsigned, short, bool itd?25.02.2004. u 21:36 - pre 245 meseci
Hvala na odgovorima.
Citat:
...In Visual C++ 5.0 and later, bool is implemented as a built-in type with a size of 1 byte. That means that for Visual C++ 4.2, a call of sizeof(bool) yields 4, while in Visual C++ 5.0 and later, the same call yields 1.

I zaista, malopre sam probao u VC++ 6.0, sizeof(bool) == 1. Još nisam video standardnu win funkciju sa parametrom bool ili da ga vraća kao vrednost.
Citat:
Commonly used Windows SDK and MFC data types are as follows:
BOOL A Boolean value.
...

(navodi su iz MSDN-a).
Inače čist bool sam uspeo da nađem samo u STL-u.
Da me ne shvatite pogrešno, sve navedeno koristim, ali sam primetio da su neke stvari standardizovane, kao npr. BOOL (što se win tiče, za drugo ne znam).

Slažem se sa Reljom u vezi short-a: može da koristi pri radu sa fajlovima. Ali čini mi se da bih se pre odlučio za duplo veći niz bajtova nego niz short-ova.
Ovde je više pitanje da li short ili unsigned može da škodi? Jer ako izađemo iz njihovih domena, nastaje ludnica. Dakle ako sam stavio da je nešto unsigned, moram da pazim sa oduzimanjima, a za short moram da pazim da ne pređe 2^15 - 1, odnosno za unsigned verziju, 2^16 - 1, što u današnje vreme nisu neke velike cifre :). To teško može da se prati, a računati na konverzije kompajlera je neozbiljno.
Naravno, druga je stvar ako je nešto od ovoga neophodno, kao u primeru sa velikim brojevima. Takođe, jasno je da se uvek može preći domen, ali čini mi se da je int nekako prava mera za većinu situacija.
U stvari najviše me zanima koliko se vas uopšte razmišlja pri standardnoj deklaraciji nekog brojača itsl? Ako unapred znaš koliki niz očekuješ, da li ćeš se odlučiti za short ili unsigned short ako je to dovoljno? Ili kažeš "ma 'cu stavim int da se ne zezam"?
 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 895
*.winn.dial.virgin.net



+4 Profil

icon Re: koliko koristite unsigned, short, bool itd?26.02.2004. u 00:23 - pre 245 meseci
Koristim sve moguce tipove svakodnevno (ukljuchujuci i __int64 :)
Koje tipove od ovih "redjih" ce ko koristiti zavisi verovatno od prirode posla/problema.

Ne vidim valjani razlog da se razmishlja o tipu kod brojacha petlje (ukoliko u samoj npr. for() petlji nema eksplicitnog tipa kao uslov). unsigned/int je uvek dobar kandidat. Vishe lezhi kompajleru sa svoja 4 bajta.

Citat:
U jednom trenutku mi je izgledalo bolje da, ako mi već treba veći int, stavim long a pozitivnost da proveravam kroz kod, tako da pada u vodu početni razlog. Osim ako ti treba unsigned long, za zaista velike brojeve


Za danashnje platforme ovo u principu ne stoji, jer po standardu velichina int-a nije propisana (4 bajta na trenutnim platformama, ali ko zna...), dok je long tip garantovano 4 bajta (barem u zadnjem standardu koji sam pogledao)! A ako ti treba neshto vece od 4 bajta tu je (nestandardni) __int64 :)

Citat:
short?
Hm, pa tu ne vidim neku specijalnu korist

Opet, zavisi. Meni short (2 bajta) puno znachi! Uz pravilni alignement shtedi gomilu memorije!

Citat:
bool?
Praktično je izbačen pod win32


Za WinAPI je "C" najmanji zajednichki, tako da je BOOL ustvari int. Ipak, za sve shto nije WinAPI uvek koristim standardni bool (mada mislim da je sizeof(bool)==1 MS specific. Chini mi se da je kod nekih kompalera 4 bajta, mozhda greshim)

 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.adsl.zonnet.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: koliko koristite unsigned, short, bool itd?26.02.2004. u 00:34 - pre 245 meseci
Citat:
Za danashnje platforme ovo u principu ne stoji, jer po standardu velichina int-a nije propisana (4 bajta na trenutnim platformama, ali ko zna...), dok je long tip garantovano 4 bajta (barem u zadnjem standardu koji sam pogledao)! A ako ti treba neshto vece od 4 bajta tu je (nestandardni)


Po standardu je: sizeof(short)<=sizeof(int)<=sizeof(long)
GCC podržava i long long.

Učinilo mi se da sam negde pročitao da C99 takođe pominje long long?

f
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.microsoft.com



+18 Profil

icon Re: koliko koristite unsigned, short, bool itd?26.02.2004. u 00:38 - pre 245 meseci
NastyBoy je u pravu, ali samo da dodam ovo: u MSVCu, na 64bitnim platformama je sizeof(int) = sizeof(long) = 32 bita, a __int64 je 64 bita. Znaci velicina inta se ne menja u prelazu sa 32 na 64 bita.

Apropos unsigned / signed za 'velike brojeve'. 2GB uopste nije toliko mnogo kao sto deluje, pogotovu ako kod koji pises treba da se izvrsava malo duze - recimo desetak godina. Svaki bit znaci, i ne treba bilo sta otpisivati zato sto danas izgleda kao da nije potrebno. Pogotovu kada je sve jedno da li ces nesto da deklarises kao int ili unsigned int.
 
Odgovor na temu

caboom
Igor Bogicevic
bgd

Član broj: 255
Poruke: 1503
*.verat.net

ICQ: 60630914


+1 Profil

icon Re: koliko koristite unsigned, short, bool itd?26.02.2004. u 01:07 - pre 245 meseci
Citat:
filmil:
Učinilo mi se da sam negde pročitao da C99 takođe pominje long long?


yep, C99 pominje long long i unsigned long long.
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon Re: koliko koristite unsigned, short, bool itd?26.02.2004. u 08:47 - pre 245 meseci
Slažem se sa većinom, i da svaki tip ima svoje mesto u upotrebi.
Pogledajte sledeći kod. Nagradno pitanje je:
koliko puta se izvršava sledeća petlja:
Code:
unsigned int i;
unsigned char niz[1000];
for (i=999; i>=0; --i) {
     // radi nešto sa niz-om
}
?
Nije ništa neobično da niz treba obrađivati "otpozadi" (izvin'te na izrazu :), ali da li je ovo dobro? I ako nije, kako rešiti to, ostavljajući da je brojač unsigned?
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.attbi.cable.earthlink.net



+18 Profil

icon Re: koliko koristite unsigned, short, bool itd?26.02.2004. u 09:21 - pre 245 meseci
Code:

for ( i = 999; i != (UINT) -1; i-- )

:)
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon Re: koliko koristite unsigned, short, bool itd?26.02.2004. u 10:09 - pre 245 meseci
U bre, Relja, pa ti baš imaš odgovor na sve :) Ti si neki unsigned guru? :)
Mislim da si me ubedio. Samo malo discipline...
 
Odgovor na temu

[es] :: C/C++ programiranje :: koliko koristite unsigned, short, bool itd?

[ Pregleda: 2997 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.