The untyped integer constant 0xFFFFFFFF represents a positive number not representable by any int32 value.
On Tue, Jun 14, 2016, 19:45 Dave MacFarlane <driu...@gmail.com> wrote: > 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 > -- -j -- 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.