Question about iteger literals

Uranuz via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Jun 22 05:08:27 PDT 2014


On Sunday, 22 June 2014 at 11:57:48 UTC, Uranuz wrote:
> Another stupid question. Using this logic substraction for two 
> uint values should return int too, because it can produce 
> negative result. Am I right or not?

Now this code

import std.stdio;

void main()
{
	uint a = 50;
	uint b = 60;
	auto c = a - b;

	writeln(typeid(c));
}
produce output "uint". It's some breakage in my logic. I am 
thinking that all integer-like types should behave similar way. I 
perceive char type as ubyte, that should be printed as symbol 
when using functions like writeln(). But the folowing example

import std.stdio;

void main()
{
	ubyte a = 50;
	ubyte b = 60;
	auto c = a - b;

	writeln(typeid(c));
}

produces output "int" like you said. Why there are so complicated 
rules in the *new* language. It's hard to understand the logic.


More information about the Digitalmars-d-learn mailing list