Re: GCC 3.3.1, new warnings with <limits>

From: Stefan Farfeleder <stefan_at_fafoe.narf.at>
Date: Sun, 13 Jul 2003 20:46:51 +0200
On Sun, Jul 13, 2003 at 01:25:45PM -0500, David Leimbach wrote:
> 
> On Sunday, July 13, 2003, at 1:11PM, M. Warner Losh wrote:
> 
> >In message: <20030713152154.GA96653_at_stack.nl>
> >            Jilles Tjoelker <jilles_at_stack.nl> writes:
> >: The compiler moans about (T)(-1) >= 0 as well. Is the assumption that
> >: (unsigned type)(-1) is never zero valid?
> >
> >yes.  There are no known machines where -1 == 0 for types of different
> >signs.  Further, the C standard says that it must behave as if it is a
> >two's complement machine, and I think that C++ says so too.
> >
> 
> I am pretty certain you can do one's compliment in the C99 standard, 
> and that
> some of that is implementation/platform dependant.

<snip>

You seem to be confused.  While signed integers certainly can use the
one's complement representation, the conversion of an negative value to
an unsigned type is a different matter.  The relevant quote from C99 is:

6.3.1.3 Signed and unsigned integers

2 Otherwise, if the new type is unsigned, the value is converted by repeatedly adding or
  subtracting one more than the maximum value that can be represented in the new type
  until the value is in the range of the new type.49)

Regards,
Stefan Farfeleder
Received on Sun Jul 13 2003 - 09:47:01 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:15 UTC