GCC 3.3.1, new warnings with <limits>
David Leimbach
leimy2k at mac.com
Sun Jul 13 11:38:05 PDT 2003
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"
More information about the freebsd-current
mailing list