digitalmars.D.learn - Is integer overflow defined?
- Sean Eskapp <eatingstaples gmail.com> Sep 01 2011
- Timon Gehr <timon.gehr gmx.ch> Sep 01 2011
- Sean Eskapp <eatingstaples gmail.com> Sep 01 2011
- bearophile <bearophileHUGS lycos.com> Sep 01 2011
- Timon Gehr <timon.gehr gmx.ch> Sep 02 2011
Is integer overflow defined (for instance, as being mod 2^size)? Can I reliably say that -long.min == 0L?
Sep 01 2011
On 09/01/2011 06:20 PM, Sean Eskapp wrote:Is integer overflow defined (for instance, as being mod 2^size)?
I am quite sure that all operations are defined as operations on two's complement integers, which would mean overflow is defined, but I cannot find the respective part of the specification...Can I reliably say that -long.min == 0L?
Well no, -long.min == long.min . according to TDPL p53., that fact is defined. (unary minus: -x == ~x+1)
Sep 01 2011
== Quote from Timon Gehr (timon.gehr gmx.ch)'s articleOn 09/01/2011 06:20 PM, Sean Eskapp wrote:Is integer overflow defined (for instance, as being mod 2^size)?
complement integers, which would mean overflow is defined, but I cannot find the respective part of the specification... > Can I reliably say that -long.min == 0L? Well no, -long.min == long.min . according to TDPL p53., that fact is defined. (unary minus: -x == ~x+1)
Ah, good points, thanks!
Sep 01 2011
Timon Gehr:according to TDPL p53., that fact is defined. (unary minus: -x == ~x+1)
Uhmmmm. Bye, bearophile
Sep 01 2011
On 09/02/2011 02:45 AM, bearophile wrote:Timon Gehr:according to TDPL p53., that fact is defined. (unary minus: -x == ~x+1)
Uhmmmm. Bye, bearophile
For unsigned integers it is clearly defined: 1000... => 0111... => 1000... And according to TDPL p53: "This manipulation does not raise particular questions about the signedness of val". So, it is guaranteed that it will work for long.min .
Sep 02 2011









Sean Eskapp <eatingstaples gmail.com> 