Problem with object understanding and datatypes

Namal sotis22 at mail.ru
Sat May 25 00:42:45 PDT 2013


Thank you very much, I thought the operators are alrdy checked by
if (op == "+" || op == "-" || op == "/")

But I did same tests for ushort uint and ulong, but for ulong it 
didn't  compile.

unittest{
	alias sulong = Saturated!ulong;
	assert(sulong(18_446_744_073_709_551_610) + sulong(2) == 
sulong(18_446_744_073_709_551_612));
	assert(sulong(18_446_744_073_709_551_614) + sulong(2) == 
sulong(18_446_744_073_709_551_615));

It failed to compile

Error: signed integer overflow

So I appended uL to each number and it worked.

assert(sulong(18_446_744_073_709_551_610uL) + sulong(2uL) == 
sulong(18_446_744_073_709_551_612uL));

Was it the right idea to fix it? And if so, do I always have to 
use a suffix when the number is bigger than  uint?


More information about the Digitalmars-d-learn mailing list