第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

int 與 int32 返回值

int 與 int32 返回值

Go
函數(shù)式編程 2023-03-21 15:04:06
int32我遇到了一個(gè)問題,這似乎與vs數(shù)據(jù)類型有關(guān)int。我的程序在不同的環(huán)境中返回不同的值。例如,在 go playground 上,我注意到返回的值為 -4(這是預(yù)期值)。但是在 Leetcode 上相同的輸入返回值 4294967292。當(dāng)它返回這個(gè)值時(shí),當(dāng)我打印它時(shí),我得到 -4(見后面添加的輸出)。我嘗試投射到int32(res)但沒有幫助。也沒有在教科書中找到任何直接相關(guān)的內(nèi)容。請幫助我理解為什么 go playground 與 Leetcode 不同。https://play.golang.org/p/qXMd9frlhbepackage mainimport (    "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:4294967292Expected:-4Stdout:res -4
查看完整描述

1 回答

?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊

您要查找的教科書是

Go 編程語言規(guī)范

數(shù)值類型

數(shù)字類型表示整數(shù)或浮點(diǎn)值的集合。預(yù)先聲明的獨(dú)立于體系結(jié)構(gòu)的數(shù)字類型是:

uint32 set of all unsigned 32-bit integers (0 to 4294967295)

uint64 set of all unsigned 64-bit integers (0 to 18446744073709551615)


int32? set of all signed 32-bit integers (-2147483648 to 2147483647)

int64? set of all signed 64-bit integers (-9223372036854775808 to 9223372036854775807)

還有一組預(yù)先聲明的數(shù)字類型,具有特定于實(shí)現(xiàn)的大小:


uint either 32 or 64 bits

int? same size as uint

檢查類型的大小int。在 Go Playground 上,它是 4 個(gè)字節(jié)或 32 位。


package main


import (

? ? "fmt"

? ? "runtime"

? ? "unsafe"

)


func main() {

? ? fmt.Println("arch", runtime.GOARCH)

? ? fmt.Println("int", unsafe.Sizeof(int(0)))

}

游樂場:https://play.golang.org/p/2A6ODvhb1Dx


輸出(游樂場):


arch amd64p32

int 4

在您的 (LeetCode) 環(huán)境中運(yùn)行該程序。它可能是 8 個(gè)字節(jié)或 64 位。


例如,在我的環(huán)境中,


輸出(本地):


arch amd64

int 8

以下是對您的代碼的一些修復(fù),


package main


import (

? ? "fmt"

? ? "runtime"

)


func main() {

? ? fmt.Println(runtime.GOARCH)

? ? fmt.Printf("%v\n", singleNumber([]int{-2, -2, 1, 1, -3, 1, -3, -3, -4, -2}))

}


func singleNumber(nums []int) int {

? ? sum := make([]int, 64)


? ? for _, v := range nums {

? ? ? ? for i := range sum {

? ? ? ? ? ? sum[i] += 1 & (v >> uint(i))

? ? ? ? }

? ? }


? ? res := 0

? ? for k, v := range sum {

? ? ? ? if (v % 3) != 0 {

? ? ? ? ? ? res |= (v % 3) << uint(k)

? ? ? ? }

? ? }

? ? fmt.Printf("res %+v\n", res)

? ? return res

}

游樂場:https://play.golang.org/p/kaoSuesu2Oj


輸出(游樂場):


amd64p32

res -4

-4

輸出(本地):


amd64

res -4

-4


查看完整回答
反對 回復(fù) 2023-03-21
  • 1 回答
  • 0 關(guān)注
  • 131 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)