On Sunday, July 13, 2003, at 1:23PM, M. Warner Losh wrote: > : > 134 #define __glibcpp_signed(T) ((T)(-1) < 0) > : #define __glibcpp_signed(T) (!((T)(-1) > 0)) > > Why not the simpler: > > #define __glibcpp_signed(T) ((T)(-1) <= 0) > > that way we have an overlap on the range of the two types, so we won't > get a warning. We know for a fact that -1 != 0 for all known machine > types (all machines are two's complement, or are required to behave as > if they are two's complement, per the standard). > You keep saying this... where is this "must behave as two's compliment stated?" > (unsigned int) -1 == 0xffffffff (assuming 32-bit int). or with a valid one's compliment C99 compliant system (unsigned int) -1 = 0xfffffffe; > > even on a one's complement's machine, without the standard conversion, > the 'type punning' conversion of -1 would yield 0xfffffffe, which is > still > 0. > Correct :). I still don't think C enforces two's compliment. Dave > Warner > _______________________________________________ > freebsd-current_at_freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to > "freebsd-current-unsubscribe_at_freebsd.org"Received on Sun Jul 13 2003 - 09:38:04 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:15 UTC