int32我遇到了一个问题,这似乎与vs数据类型有关int。我的程序在不同的环境中返回不同的值。
例如,在 go playground 上,我注意到返回的值为 -4(这是预期值)。但是在 Leetcode 上相同的输入返回值 4294967292。当它返回这个值时,当我打印它时,我得到 -4(见后面添加的输出)。
我尝试投射到int32(res)但没有帮助。也没有在教科书中找到任何直接相关的内容。请帮助我理解为什么 go playground 与 Leetcode 不同。
https://play.golang.org/p/qXMd9frlhbe
package main
import (
"fmt"
)
func main() {
fmt.Printf("%v", singleNumber([]int{-2,-2,1,1,-3,1,-3,-3,-4,-2}))
}
func singleNumber(nums []int) int {
sum := make([]int, 32)
for _, v := range nums {
for i := 0; i < 32; i++ {
if sum[i] != 0 {
sum[i] += 1 & (v >> uint32(i))
} else {
sum[i] = 1 & (v >> uint32(i))
}
}
}
res := 0
for k, v := range sum {
if (v%3) != 0 {
res |= (v%3) << uint32(k)
}
}
fmt.Printf("res %+v\n", res)
return res
}
同样在 Leetcode 上给出了输出:
Input:
[-2,-2,1,1,-3,1,-3,-3,-4,-2]
Output:
4294967292
Expected:
-4
Stdout:
res -4
红糖糍粑
相关分类