'int' is enough for 'length' to migrate code from x86 to x64

Don via Digitalmars-d digitalmars-d at puremagic.com
Tue Nov 25 03:42:59 PST 2014


On Monday, 24 November 2014 at 15:56:44 UTC, Andrei Alexandrescu 
wrote:
> On 11/24/14 4:54 AM, Don wrote:
>> In D,  1u - 2u > 0u. This is defined behaviour, not an 
>> overflow.
>
> I think I get what you mean, but overflow is also defined 
> behavior (in D at least). -- Andrei


Aargh! You're right. That's new, and dreadful. It didn't used to 
be.
The offending commit is

alexrp              2012-05-15 15:37:24

which only provides an unsigned example.

Why are defining behaviour that is always a bug? Java makes it 
defined, but it has to because it doesn't have unsigned types.
I think the intention probably was to improve on the C situation, 
where there is undefined behaviour that really should be defined.

But do we really want to preclude ever having overflow checking 
for integers?



More information about the Digitalmars-d mailing list