Go 语言存在隐式类型转换?

查看 26|回复 1
作者:assassing   
忘了在哪本书上看到的例子:
package main
import "fmt"
func main() {
        // 不指定类型时为浮点数
        var a = 2e3
        fmt.Printf("%T: %v\n", a, a) // 输出:float64: 2000
        // 编译成功,因为 1.5e3 等于 1500 ,是一个整数
        var b int = 1.5e3
        fmt.Printf("%T: %v\n", b, b) // 输出:int: 1500
}
上面代码中,为什么 var b int = 1.5e3 能通过编译,难道科学计数法被视为算术表达式或常量表达式?不然我只能认为 Go 语言存在隐式类型转换了。
有请知道的大佬解答原因,还有没有类似的情况呢?
lysShub   
1.5e3 只是一种写法,有小数点不一定是浮点数啊,试试 var b int = 1.55555e3
您需要登录后才可以回帖 登录 | 立即注册

返回顶部