Thoughts on unified integer literal improvements
Weijun Wang
Weijun.Wang at Sun.COM
Mon Jun 29 19:39:38 PDT 2009
brucechapman at paradise.net.nz wrote:
> Quoting Weijun Wang <Weijun.Wang at Sun.COM>:
>
>>> long ell = 0xFFFFFFFFu; // A positive long value
>> Any particular requirement here? Why not simply
>>
>> long ell = 0xFFFFFFFFl;
>>
>>> I think this approach has some advantages over the "y" suffix; in
>>> particular I think it gives more desirable behavior in cases like
>> this:
>>> byte b = 0xFFy // a negative byte value
>>> byte b = 0xFFu // also a negative byte value
>>>
>>> short s = 0xFFy // a negative short value, -128;
>>> // byte value is signed extended
>>> short s = 0xFFu // a positive short value, +127
>>>
>>> int i = 0xFFy // -128
>>> int i = 0xFFu // 127
>> Does this mean the actual value of 0xFFu is determined by looking at
>> the
>> LHS of the assignment? This is terrible.
>
> Yes that would be terrible if it were true, fortunately it is not. The value is
> determined by the digits and any radix specified by the prefix. In the above
> examples, the "y" suffix means byte, so when is widened to a short or int it
> sign extends and stays negative. The "u" suffix would create a special type that
> would always zero extend when widening giving a positive number.
I still find it difficult to understand this 'u' thing. When you say
"zero extend when", isn't that the same with what I said "depending on
the LHS"?
What is the most important usage of it?
>
>> I'd rather use something like 0bXX which is itself always a byte
>> literal.
>
> But that is inconsistent, prefixes currently determine radix, suffixes determine
> type. Also the binary literals part of the proposal is using 0b as a prefix for
> binary literals so 0bXX is an int.
I see.
Thanks
Max
>
> Bruce
>
>> Max
>>
>>> -Joe
>>>
>>
>
More information about the coin-dev
mailing list