• 03go运算符


    go运算符

    Golang 内置的运算符

    1. 算术运算符
    2. 关系运算符
    3. 逻辑运算符
    4. 位运算符
    5. 赋值运算符

    1 、算数运算符

    运算符 描述
    + 相加
    - 相减
    * 相乘
    / 相除
    % 求余=被除数-(被除数/除数)*除数

    注意: ++(自增)和--(自减)在 Go 语言中是单独的语句,并不是运算符。

    package main
    import (
    	"fmt"
    )
    func main() {
    	fmt.Println("10+3=", 10+3) // =13
    	fmt.Println("10-3=", 10-3) // =7
    	fmt.Println("10*3=", 10*3) // =30
        
    	//除法注意:如果运算的数都是整数,那么除后,去掉小数部分,保留整数部分
    	fmt.Println("10/3=", 10/3) //3
    	fmt.Println("10.0/3=", 10.0/3) //3.3333333333333335
        
    	// 取余注意 余数=被除数-(被除数/除数)*除数
    	fmt.Println("10%3=", 10%3) // =1
    	fmt.Println("-10%3=", -10%3) // -1
    	fmt.Println("10%-3=", 10%-3) // =1
    	fmt.Println("-10%-3=", -10%-3) // =-1
    }
    

    注意:在 golang 中,++ 和 -- 只能独立使用 错误写法如下:

    var i int = 8
    var a int
    a = i++ //错误,i++只能独立使用
    a = i-- //错误, i--只能独立使用
    
    var i int = 1
    ++i // 错误,在 golang 没有 前++
    --i // 错误,在 golang 没有 前--
    fmt.Println("i=", i)
    

    正确写法

    var i int = 1
    i++
    fmt.Println("i=", i)
    

    2、关系运算符

    运算符 描述
    == 检查两个值是否相等,如果相等返回 True 否则返回 False。
    != 检查两个值是否不相等,如果不相等返回 True 否则返回 False。
    > 检查左边值是否大于右边值,如果是返回 True 否则返回 False。
    >= 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。
    < 检查左边值是否小于右边值,如果是返回 True 否则返回 False。
    <= 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。

    3、逻辑运算符

    运算符 描述
    && 逻辑与运算符。如果两个操作数都非零,则条件变为真
    || 逻辑或操作。如果任何两个操作数是非零,则条件变为真
    ! 逻辑非运算符。使用反转操作数的逻辑状态。如果条件为真,那么逻辑非操后结果为假

    4、赋值运算符

    运算符 描述
    = 简单的赋值运算符,将一个表达式的值赋给一个左值
    += 相加后再赋值
    -= 相减后再赋值
    *= 相乘后再赋值
    /= 相除后再赋值
    %= 求余后再赋值
    <<= 左移后赋值
    >>= 右移后赋值
    &= 按位与后赋值
    |= 按位或后赋值
    ^= 按位异或后赋值

    5、位运算符

    A B A&B A|B A^B
    0 0 0 0 0
    0 1 0 1 1
    1 1 1 1 0
    1 0 0 1 1

    这里最难理解的就是^了,只要认为AB两者都相同的时候,为0,其他都为1

    假设A为60,B为13

    A: 0011 1100

    B: 0000 1101

    运算 描述 示例
    & 二进制与操作副本位的结果,如果它存在于两个操作数 (A & B) = 12, 也就是 0000 1100
    | 二进制或操作副本,如果它存在一个操作数 (A | B) = 61, 也就是 0011 1101
    ^ 二进制异或操作副本,如果它被设置在一个操作数就是按位取非 (A ^ B) = 49, 也就是 0011 0001
    &^ 二进制位清空&^ (A&^B)=48,也就是110000
    << 二进制左移位运算符。左边的操作数的值向左移动由右操作数指定的位数 A << 2 =240 也就是 1111 0000
    >> 二进制向右移位运算符。左边的操作数的值由右操作数指定的位数向右移动 A >> 2 = 15 也就是 0000 1111
    & 两位均为 1 才为 1
    
    | 两位有一个为 1 就为 1
    
    ^ 相异或 两位不一样则为 1
    
    << 左移 n 位就是乘以 2 的 n 次方。 “a<<b”是把 a 的各二进位全部左移 b 位,
    高位丢弃,低位补 0。
    
    >> 右移 n 位就是除以 2 的 n 次方。
    

    6、优先级运算符优先级

    有些运算符拥有较高的优先级,二元运算符的运算方向均是从左至右。下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:

    优先级 运算符
    7 ~ ! ++ --
    6 * / % << >> & &^
    5 + - ^
    4 == != < <= >= >
    3 <-
    2 &&
    1 ||

    当然,你可以通过使用括号来临时提升某个表达式的整体运算优先级。

  • 相关阅读:
    区域赛
    kd树的创建和求最近邻
    Fliptile POJ
    第六周作业
    第四次作业
    第三次作业
    第二周作业
    第一次作业
    董雅洁 我的第0次作业
    21 UI_布局 之 线性布局 xml配置方式
  • 原文地址:https://www.cnblogs.com/slzhao/p/13296914.html
Copyright © 2020-2023  润新知