Integer literals

ric maicle via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Jan 4 06:54:29 PST 2016


I was rereading the Integer Literals section and trying out some code
when I came across a couple of error messages on integer overflows.

I have reproduced the code below for reference.

void main()
{
     // The maximum long value is ...807
     // The following line produces an error message:
     // Error: signed integer overflow
     auto a = 9_223_372_036_854_775_808;

     // The maximum ulong value is ...615
     // The following line produces an error message:
     // Error: integer overflow
     auto g = 18_446_744_073_709_551_616U;
}

I just wanted to point out that the second error message might be
consistent if it says 'Error: unsigned integer overflow' in
comparison to the first error message.

Also, I noticed under the Integer Literal section of the D reference
document (http://dlang.org/spec/lex.html) that the range of uint

   0U .. 4_294_967_296U

in the table Decimal Literal Types has a typo. Shouldn't the range
end with 4_294_967_295U?

Here's a snippet:

import std.stdio;
void main()
{
     writeln(typeof(4_294_967_295U).stringof);
     writeln(typeof(4_294_967_296U).stringof);
}



More information about the Digitalmars-d-learn mailing list