www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Bug? or do I something wrong

reply Daniel Kozak <kozzi11 gmail.com> writes:
import std.stdio;

void main() {

     auto x = 9223372036854775807L;
     auto x2 = 9223372036854775807L + 1;
     long x3 = -9223372036854775808U;
     //auto x4 = -9223372036854775808L; //Error: signed integer 
overflow

     writeln(x + 1); //-9223372036854775808
     writeln(x2);    //-9223372036854775808
     writeln(x3);    //-9223372036854775808
     //writeln(x4);
}
Dec 30 2015
next sibling parent tcak <1ltkrs+3wyh1ow7kzn1k sharklasers.com> writes:
On Wednesday, 30 December 2015 at 14:07:54 UTC, Daniel Kozak 
wrote:
 import std.stdio;

 void main() {

     auto x = 9223372036854775807L;
     auto x2 = 9223372036854775807L + 1;
     long x3 = -9223372036854775808U;
     //auto x4 = -9223372036854775808L; //Error: signed integer 
 overflow

     writeln(x + 1); //-9223372036854775808
     writeln(x2);    //-9223372036854775808
     writeln(x3);    //-9223372036854775808
     //writeln(x4);
 }
I reported this bug about 2-3 months ago, and people said something like it is same in C, and was reported a long time ago etc. So, nothing is changing about it.
Dec 30 2015
prev sibling parent reply Steven Schveighoffer <schveiguy yahoo.com> writes:
On 12/30/15 9:07 AM, Daniel Kozak wrote:
 import std.stdio;

 void main() {

      auto x = 9223372036854775807L;
      auto x2 = 9223372036854775807L + 1;
      long x3 = -9223372036854775808U;
      //auto x4 = -9223372036854775808L; //Error: signed integer overflow
Not a bug. This is parsed as - (9223372036854775808L) That number cannot be represented in signed long, so it fails. The only correct thing to do is via x3. -Steve
Dec 30 2015
parent Daniel Kozak <kozzi11 gmail.com> writes:
On Wednesday, 30 December 2015 at 20:13:46 UTC, Steven 
Schveighoffer wrote:
 On 12/30/15 9:07 AM, Daniel Kozak wrote:
 import std.stdio;

 void main() {

      auto x = 9223372036854775807L;
      auto x2 = 9223372036854775807L + 1;
      long x3 = -9223372036854775808U;
      //auto x4 = -9223372036854775808L; //Error: signed 
 integer overflow
Not a bug. This is parsed as - (9223372036854775808L) That number cannot be represented in signed long, so it fails. The only correct thing to do is via x3. -Steve
Thanks :)
Dec 30 2015