What I'm not understanding is why that's not the case in this example. It's
a 32 bit bitwise operation on a 32 bit signed type.  Shouldn't 0xFFFFFFFF
be coerced to a value of -1?

On Tue, Jun 14, 2016 at 1:23 PM, Jan Mercl <0xj...@gmail.com> wrote:

> All binary operators, except shifts, require identical left and right
> types. Untyped values will be coerced to the type of the other side, if
> representable as such after the conversion. That's not the case in this
> example.
>
> On Tue, Jun 14, 2016, 19:16 Dave MacFarlane <driu...@gmail.com> wrote:
>
>> Is this supposed to be legal in Go:
>>
>> var x int32 = 3
>>
>> fmt.Printf("%d", x & 0xFFFFFFFF)?
>>
>> The language spec just says the bitwise operator "applies to integers
>> only" and
>> "yields a result of the same type as the first operand" that I can see,
>> but it's giving
>> me a compiler error:
>>
>> ./main.go:10: constant 4294967295 overflows int32
>>
>> with go 1.6.2.
>>
>> Is this a compiler bug, or am I missing something else in the spec that
>> makes it impossible
>> to mask out the high bit in a signed integer type without converting to
>> an unsigned equivalent first?
>>
>> - Dave
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to golang-nuts+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>
> --
>
> -j
>



-- 
- Dave

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to