typing base ^^ exp

Simen kjaeraas simen.kjaras at gmail.com
Mon Feb 15 03:59:56 PST 2010


Andrei Alexandrescu <SeeWebsiteForEmail at erdani.org> wrote:

> ====
> The type of  the power expression is: @uint@ if  both @base@ and @exp@
> have unsigned  types less  than @ulong@; @int@  if @base@ is  a signed
> integer  less than  @long@ and  @exp@ is  an unsigned  type  less than
> @ulong@; @ulong@ if  both @base@ and @exp@ have  unsigned types and at
> least  one is  @ulong@; @long@  if @base@  is @long@  and @exp@  is an
> unsigned  type; and @double@  for all  other combinations  of integral
> @base@ and @exp at . If at least one of the operands has a floating point
> type,  the result  type is  the largest  participating  floating point
> type.
> ====
>
> Makes sense?

I believe any and all powExps with integral base and exp should yield an
integral result. If you want a double, you ask for it with a cast.

Especially, as Don pointed out, when positive integral literals in D are
typed as int. "WTF? foo( 2^^2 ) complains about doubles? It don't do
that when I do uint x = 2; foo( 2^^x )!"

-- 
Simen



More information about the Digitalmars-d mailing list