猿问

使用 uint64 的 for 循环不会停止

有没有解释为什么使用 uint64 的循环不会在 0 处停止?


我用 int 尝试了相同的 for 循环,它按预期工作。


package main


import (

    "fmt"

)


func main() {

  i := uint64(5)

  for ; i>=uint64(0); i-- {

  fmt.Printf("step %d\n", i)

  }

}

我希望这个函数在输出时停止step 0,但它会溢出 int 并永远继续下去step 18446744073709551615等等


智慧大石
浏览 95回答 1
1回答

慕哥9229398

您的循环继续 while i >= 0,但无符号整数始终大于或等于零。无符号整数不能为负数,因此您的循环永远不会终止。尝试更改i为int64并查看其行为是否有所不同。:-)祝你好运。
随时随地看视频慕课网APP

相关分类

Go
我要回答