Re: INT_MIN and compiler diagnostic
- From: "bytebro" <keith.willis@xxxxxxxxx>
- Date: 28 Feb 2007 07:34:52 -0800
On 28 Feb, 13:20, Chris Dollin <chris.dol...@xxxxxx> wrote:
bytebro wrote:
On 28 Feb, 12:34, pete <pfil...@xxxxxxxxxxxxxx> wrote:
If INT_MAX equals 2147483647,
the the type of 2147483648 can't be type int, can it?
Erm... it doesn't say "2147483648", it says "-2147483648", which is
exactly equal to INT_MIN, and is therefore a valid int value. The
warning is therefore misleading, no?
No.
`-2147483648` isn't a literal constant. It's an expression, the
negation of `2147483648`.
Wow. I've been mucking around with C for about 20 years now, and
that's the first time I've come across that!
The thing is, in the OP's code lines 7 and 8, it says:
7 int y = -2147483648;
8 int x = INT_MIN;
which are _completely_ equivalent (INT_MIN is _defined_ as
-2147483648), and yet line 7 generates the warning:
/tmp/x.c:7: warning: this decimal constant is unsigned only in ISO
C90
on his system, and the warning:
x.c:7: warning: decimal constant is so large that it is unsigned
on my system, but line 8 generates no warning at all for either of us.
.
- Follow-Ups:
- Re: INT_MIN and compiler diagnostic
- From: Richard Tobin
- Re: INT_MIN and compiler diagnostic
- From: *** T. Winter
- Re: INT_MIN and compiler diagnostic
- References:
- Re: INT_MIN and compiler diagnostic
- From: bytebro
- Re: INT_MIN and compiler diagnostic
- From: pete
- Re: INT_MIN and compiler diagnostic
- From: bytebro
- Re: INT_MIN and compiler diagnostic
- From: Chris Dollin
- Re: INT_MIN and compiler diagnostic
- Prev by Date: Re: Weird segmentation fault
- Next by Date: Re: INT_MIN and compiler diagnostic
- Previous by thread: Re: INT_MIN and compiler diagnostic
- Next by thread: Re: INT_MIN and compiler diagnostic
- Index(es):