www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - uint overflow behaviour

reply DLearner <bmqazwsx123 gmail.com> writes:
Please confirm that if the addition of two uint variables 
produces a result larger than can be held in a uint:
1.  This is a D-legal operation (however inadvisable!), with the 
D-defined result of wraparound;
2.  Emphasing 1. above: the result is not undefined, or an error 
(by the rules of D), or simply implementation-dependant (whether 
by compiler or chip).

Best regards
Sep 15 2021
next sibling parent rikki cattermole <rikki cattermole.co.nz> writes:
https://dlang.org/spec/expression.html#add_expressions

"7. If both operands are of integral types and an overflow or underflow 
occurs in the computation, wrapping will happen. For example, uint.max + 
1 == uint.min, uint.min - 1 == uint.max, int.max + 1 == int.min, and 
int.min - 1 == int.max."
Sep 15 2021
prev sibling parent reply Steven Schveighoffer <schveiguy gmail.com> writes:
On Wednesday, 15 September 2021 at 10:08:13 UTC, DLearner wrote:
 Please confirm that if the addition of two uint variables 
 produces a result larger than can be held in a uint:
 1.  This is a D-legal operation (however inadvisable!), with 
 the D-defined result of wraparound;
Definition under point 7 here : https://dlang.org/spec/expression.html#add_expressions And I wouldn’t say inadvisable. It’s defined and if you have a good reason to allow that, then you can do that.
 2.  Emphasing 1. above: the result is not undefined, or an 
 error (by the rules of D), or simply implementation-dependant 
 (whether by compiler or chip).
Yes -Steve
Sep 15 2021
parent DLearner <bmqazwsx123 gmail.com> writes:
Thanks for the responses.
Sep 15 2021