By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,670 Members | 1,526 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,670 IT Pros & Developers. It's quick & easy.

Can negating a non-negative signed integer value ever overflow?

P: n/a
Can negating a non-negative signed integer value ever overflow? Put another
way, can it be true that (mathematically) INT_MIN > -INT_MAX, LONG_MIN
-LONG_MAX etc?


I know that typically it can't overflow, but if that isn't guaranteed, how
can I portably detect if it would?

Alex
Mar 6 '06 #1
Share this Question
Share on Google+
8 Replies


P: n/a
On 2006-03-06, Alex Fraser <me@privacy.net> wrote:
Can negating a non-negative signed integer value ever overflow? Put another
way, can it be true that (mathematically) INT_MIN > -INT_MAX, LONG_MIN
-LONG_MAX etc?


I know that typically it can't overflow, but if that isn't guaranteed, how
can I portably detect if it would?

Alex


C99 only allows twos-complement, ones-complement, and signed-magnitude
representation. It is unclear what C89 allows.
Mar 6 '06 #2

P: n/a
Alex Fraser wrote:

Can negating a non-negative signed integer value ever overflow?


No.

--
pete
Mar 6 '06 #3

P: n/a
"Jordan Abel" <ra*******@gmail.com> wrote in message
news:sl***********************@random.yi.org...
On 2006-03-06, Alex Fraser <me@privacy.net> wrote:
Can negating a non-negative signed integer value ever overflow? Put
another way, can it be true that (mathematically) INT_MIN > -INT_MAX,
LONG_MIN > -LONG_MAX etc?
C99 only allows twos-complement, ones-complement, and signed-magnitude
representation.


Which implies INT_MIN is either -INT_MAX (one's complement or sign and
magnitude) or -INT_MAX - 1 (two's complement), etc, so that's OK.
It is unclear what C89 allows.


Hmm. A shame.

I know it normally can't overflow, and I can't see how to detect if it
could/would overflow anyway, so I guess should shrug my shoulders and move
on :).

Thanks,
Alex
Mar 7 '06 #4

P: n/a
pete wrote:
Alex Fraser wrote:
Can negating a non-negative signed integer value ever overflow?

No.

No context? Chuck is gonna getcha.

Assume 2's complement.

int i = INT_MIN;

This is -2147483648 and 0x80000000. If then..

i = -i;

...the result is the same. Did anything happen? Was it overflow?

--
Joe Wright
"Everything should be made as simple as possible, but not simpler."
--- Albert Einstein ---
Mar 7 '06 #5

P: n/a
Joe Wright said:
pete wrote:
Alex Fraser wrote:
Can negating a non-negative signed integer value ever overflow?

No.

No context? Chuck is gonna getcha.

Assume 2's complement.

int i = INT_MIN;

This is -2147483648 and 0x80000000. If then..

i = -i;

..the result is the same. Did anything happen? Was it overflow?


This may have escaped your notice, I know - but -2147483648 does not quite
qualify as non-negative, so it falls outside the domain of the question.

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)
Mar 7 '06 #6

P: n/a
Joe Wright <jo********@comcast.net> writes:
pete wrote:
Alex Fraser wrote:
Can negating a non-negative signed integer value ever overflow?

No.

No context? Chuck is gonna getcha.


What do you mean? pete quoted the relevant portion of the parent
article, including the attribution line, and answered the question.
(And Richard already pointed out your other error.)

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Mar 7 '06 #7

P: n/a
Keith Thompson wrote:
Joe Wright <jo********@comcast.net> writes:
pete wrote:
Alex Fraser wrote:

Can negating a non-negative signed integer value ever overflow?
No.

No context? Chuck is gonna getcha.


What do you mean? pete quoted the relevant portion of the parent
article, including the attribution line, and answered the question.
(And Richard already pointed out your other error.)


Yes, I saw no reason to unleash the slavering dogs.

--
"If you want to post a followup via groups.google.com, don't use
the broken "Reply" link at the bottom of the article. Click on
"show options" at the top of the article, then click on the
"Reply" at the bottom of the article headers." - Keith Thompson
More details at: <http://cfaj.freeshell.org/google/>
Also see <http://www.safalra.com/special/googlegroupsreply/>
Mar 8 '06 #8

P: n/a
CBFalconer wrote:
Keith Thompson wrote:
Joe Wright <jo********@comcast.net> writes:
pete wrote:

Alex Fraser wrote:
>Can negating a non-negative signed integer value ever overflow?

No.
No context? Chuck is gonna getcha.


What do you mean? pete quoted the relevant portion of the parent
article, including the attribution line, and answered the question.
(And Richard already pointed out your other error.)

Yes, I saw no reason to unleash the slavering dogs.

Sorry pete. Thanks Richard, Keith and Chuck for catching me up. I read
pete's one liner as..
"Can negating a negative signed integer value ever overflow?"

--
Joe Wright
"Everything should be made as simple as possible, but not simpler."
--- Albert Einstein ---
Mar 8 '06 #9

This discussion thread is closed

Replies have been disabled for this discussion.