4.1. 算术运算符与类型转换

未匹配的标注
本文档最新版为 2023,旧版本可能放弃维护,推荐阅读最新版!

算术运算符

运算符 术语 示例 结果
+ 10 + 5 15
- 10 - 5 5
* 10 * 5 50
/ 10 / 5 2
% 取模(取余) 10 % 3 1
++ 后自增,没有前自增 a=0; a++ a=1
-- 后自减,没有前自减 a=2; a-- a=1

加减乘除


func main() {
    a := 10
    b := 5
    fmt.Println(a + b) //30

    fmt.Println(a - b) //-10

    fmt.Println(a * b) //200

    //两个整数相除等到的结果也是整型

    //在除法计算时 除数不能为0

    fmt.Println(a / b) //???0

取余运算

func main() {
    a := 10
    b := 2
    //取余运算符除数不能为0
    //取余运算符不能对浮点型使用
    c := a % b
    fmt.Println(c)
}

自增 自减操作

注意:GO语言中没有前自增,这是与其它编程语言不同的地方。

func main() {

    //自增自减运算符

    //可以对浮点型进行自增自减运算 但是不能对常量进行自增自减运算

    a := 10

    //const a =10

    //a = a + 1

    //a++//自增 在变量本身加一

    //a--//自减

    //自增自减不能出现在表达式中

    //a = a++ + a--

    //二义性 在不同操作系统中运算方式不同 结果可能会产生偏差

    //a = a++ * a-- - a--//err

    //b:=a--//err

    fmt.Println(a)

    //fmt.Println(b)

}

类型转换

Go语言中不允许隐式转换,所有类型转换必须显式声明(强制转换),而且转换只能发生在两种相互兼容的类型之间

类型转换 数据类型(变量) 数据类型(表达式)

func main() {

    a, b, c := 0, 0, 0

    fmt.Scan(&a, &b, &c)

    sum := a + b + c
    fmt.Println(sum)
    //类型转换 数据类型(变量)  数据类型(表达式)
    //fmt.Println(float64(sum / 3))
    fmt.Printf("%.2f", float64(sum)/3)
}

类型转换准则建议

在类型转换时建议低类型转成高类型 保证数据精度
建议整型转成浮点型
高类型转成低类型 可能会丢失精度
int8 -> int16 ->int32 ->int64

float32 ->float64

int64 -> float64

下面我们来看一个丢失了精度的例子

数据溢出 符号发生变化

var a int = 1234
fmt.Println(int8(a))
fmt.Println(int32(a))

输出:

算术运算符与类型转换

浮点型转成整型 保留数据整数部分 丢弃小数部分

将浮点型转成整型 保留数据整数部分 丢弃小数部分

var a float64 = 3.999

b := int(a) //3

fmt.Println(b)

输出结果:

算术运算符与类型转换

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~