( Nyosigomboc | 2018. 04. 06., p – 15:46 )

Ha van egy ilyened:
if(a>=0)
akkor az signed eseten egy ellenorzes (pl. el fog-e meg ferni valami adatod egy pufferben), unsigned eseten meg mindig teljesul. Ez siman viheti olyan agra a programodat, ahova nem kene.
(persze az a<0 ugyanigy baj)

A masik: ha egy kifejezes kiertekelesekor van valahol unsigned tipusu ertek, akkor mar unsigned-al szamolja a tovabbiakat (ahogy pl. 16 bitesbol 32 bites lesz szamolaskor). Szoval ha nem mindent irtak at unsigned-ra, az is okozhat egy bonyolultabb helyen galibat.

Par alacsonyszintu fuggvenynel/kernel hivasnal a negativ ertek hibat jelezhet. Ha ezt ideiglenesen bepakolod egy unsigned valtozoba, nem fogod eszrevenni ezt az amugy jelentett hibat.
Pl.: man 2 open
int open(const char *pathname, int flags);
RETURN VALUE
open(), openat(), and creat() return the new file descriptor, or -1 if an error occurred (in which case, errno is set appropriately).

int fd;
if((fd=open(...))==-1)
{
hibakezeles..
}
else
{
hasznalod_a_filet;
}

Ha itt atirod az fd-t unsigned-ra, nem letezo file-t probalsz hasznalni.

--
Any A.I. smart enough to pass a Turing test is smart enough to know to fail it. -Ian McDonald