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

provera opsega celobrojne promenljive

[es] :: C programiranje :: provera opsega celobrojne promenljive

[ Pregleda: 1009 | Odgovora: 4 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

alpha
Nemanja Janic
Beograd

Član broj: 5223
Poruke: 35
*.201.eunet.yu



Profil

icon provera opsega celobrojne promenljive21.05.2004. u 02:06

Potrebno je da za odredjenu promenjlivu osiguram da ima celobrojni opseg od 0 do 255. Posto se radi o broju, ja sam jednostavno naveo da je ta promenljiva unsigned char i svaki put kada mi je potrebna njena vrednost ja uradim typecasting u unsigned short. Na slican nacin sam osigurao da korisnik ne moze da unese vrednost van ovog opsega, jer svaki put kad se unosi broj, ja ga "uglavim" izmedju 0 i 255 tako sto ga typecastujem nazad u unsigned char. Da li je ovo dobro, ili da batalim taj nacim i da jednostavno ogranicim mogucnost unosa vrednosti promenljive?
...znam koliko ne znam... ili ne?
21.05.2004. u 02:06 

Mirko Rajkovača
Subotica

Član broj: 18458
Poruke: 119
*.5.eunet.yu



Profil

icon Re: provera opsega celobrojne promenljive21.05.2004. u 16:44
Bolje i jednostavnije ti je staviti uslov tipa:
if ((a>=0) && (a<=255))
{
//something
}
else
{
//error
}

Jesi li se zapitao šta će se desiti ako korisnik unese veci broj od 255?
Razlika izmedju softvera i hardvera je:
Softver je nesto sto mozes psovati, a hardver je... pa hardver je nesto sto mozes sutati
21.05.2004. u 16:44 

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


Profil

icon Re: provera opsega celobrojne promenljive21.05.2004. u 17:29
Obično nije dobra ideja da tako svodiš na opseg. To je zato što ti u različitim situacijama može zatrebati različita obrada prekoračenja: na primer premotavanje, zasićenje ili nešto treće. Ako opseg ograničiš konverzijom onda si na milost i nemilost kompajlera.

f
21.05.2004. u 17:29 

milanche
San Francisco

Član broj: 2447
Poruke: 713
*.client.comcast.net



Profil

icon Re: provera opsega celobrojne promenljive22.05.2004. u 00:21
Cast-ovanje bi bilo ocajno lose resenje za to sto pokusavas (tj. clipping).

Evo kontra primera:

int main(void)
{
int x = 0x7FFFFF01;
unsigned char ch = (unsigned char)x;

printf("ch = 0x%X", ch);
return 0;
}

pa ces videti da cast-ovanje zapravo zadrzava samo least significant byte (LSByte) i
to metodom odsecanja, sto nikako ne daje to sto hoces.
22.05.2004. u 00:21 

alpha
Nemanja Janic
Beograd

Član broj: 5223
Poruke: 35
*.243.EUnet.yu



Profil

icon Re: provera opsega celobrojne promenljive22.05.2004. u 02:01
...eh... hvala... pa ono sto sam ja imao na umu je da kad korisnik unese broj veci od 255, kompajler ga jednostavno "premota" u opseg od 0 do 255, ali sad vidim da to bas i ne igra :) onda cu ipak da idem na if (x>255 || x<0)... a taman sam mislio da sam provalio neko bas elegantno resenje :))
...znam koliko ne znam... ili ne?
22.05.2004. u 02:01 

[es] :: C programiranje :: provera opsega celobrojne promenljive

[ Pregleda: 1009 | Odgovora: 4 ]

Postavi temu Odgovori

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