On Wednesday 02 of January 2013 16:00:50 you wrote: > > I wanted to prohibit user to assign negative value to a variable. > > This variable is later passed to a recurrence function as > > argument and of course I got segmentation fault, because > > the function is called 4294967291 times. > > I guess you mean recursive function. (Isn't English fun? Hang in there.)
Yes, you are right. [...] > This took me a couple of years to figure out, but unsigned types are > not for enforcing range. They are strictly for optimization. For > example (in C, not C++): > > int doorway( int p1, int * result ) > { > /* Note that this constant upper limit is not necessarily SHRT_MAX > from limits.h */ > if ( ( p1 < 0 ) || ( p1 > 0x7fff ) ) > { return BAD_RANGE; > } > * result = recurse( (unsigned short) p1 ) > ... > return GOOD_RANGE; > } > > unsigned short recurse( unsigned short p1 ) > { > ... > intermediate = recurse( /* some expression that never goes > negative or exceeds USHRT_MAX */ ); > ... > } Thank you very much again for sharing your knowledge. > Have fun! > > -- > Joel Rees Zbigniew -- To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/201301022321.59779.cblas...@gmail.com