go语言基础之运算符
一、运算符分类
1.1 算术运算符
运算符 |
术语 |
示例 |
结果 |
+ |
加 |
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 |
1.2 关系运算符
运算符 |
术语 |
示例 |
结果 |
== |
相等于 |
4 == 3 |
false |
!= |
不等于 |
4 != 3 |
true |
< |
小于 |
4 < 3 |
false |
> |
大于 |
4 > 3 |
true |
<= |
小于等于 |
4 <= 3 |
false |
>= |
大于等于 |
4 >= 1 |
true |
1.3 逻辑运算符
运算符 |
术语 |
示例 |
结果 |
! |
非 |
!a |
如果a为假,则!a为真; 如果a为真,则!a为假。 |
&& |
与 |
a && b |
如果a和b都为真,则结果为真,否则为假。 |
|| |
或 |
a || b |
如果a和b有一个为真,则结果为真,二者都为假时,结果为假。 |
示例:
package main //必须有一个main包 import "fmt" func main() {
fmt.Println("4 > 3 结果:", 4 > 3)
fmt.Println("4 != 3 结果:", 4 != 3) //非
fmt.Println("!(4 > 3) 结果:", !(4 > 3))
fmt.Println("!(4 != 3) 结果:", !(4 != 3)) //&& 与, 并且,左边右边都为真,结果才为真, 其它都为假
fmt.Println("true && true 结果:", true && true)
fmt.Println("true && false 结果:", true && false) // ||, 或者, 左边右边都为假,结果才为假,其它都为真
fmt.Println("true || false 结果:", true || false)
fmt.Println("false || false 结果:", false || false) //非0就是真,0就是假(但是go语言的bool类型和int不兼容)
//判断一个数,在0-11的范围
a := 11 //a :=8 结果:true 和 a := 11 结果:false
fmt.Println("0 <= a && a <= 10 结果为:", 0 <= a && a <= 10) }
#执行结果:
4 > 3 结果: true
4 != 3 结果: true
!(4 > 3) 结果: false
!(4 != 3) 结果: false
true && true 结果: true
true && false 结果: false
true || false 结果: true
false || false 结果: false
0 <= a && a <= 10 结果为: false
1.4 位运算符
运算符 |
术语 |
说明 |
示例 |
& |
按位与 |
参与运算的两数各对应的二进位相与 |
60 & 13 结果为12 |
| |
按位或 |
参与运算的两数各对应的二进位相或 |
60 | 13 结果为61 |
^ |
异或 |
参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1 |
60 ^ 13 结果为240 |
<< |
左移 |
左移n位就是乘以2的n次方。 左边丢弃,右边补0。 |
4 << 2 结果为16 |
>> |
右移 |
右移n位就是除以2的n次方。 右边丢弃,左边补位。 |
4 >> 2 结果为1 |
1.5 赋值运算符
运算符 |
说明 |
示例 |
= |
普通赋值 |
c = a + b 将 a + b 表达式结果赋值给 c |
+= |
相加后再赋值 |
c += a 等价于 c = c + a |
-= |
相减后再赋值 |
c -= a 等价于 c = c - a |
*= |
相乘后再赋值 |
c *= a 等价于 c = c * a |
/= |
相除后再赋值 |
c /= a 等价于 c = c / a |
%= |
求余后再赋值 |
c %= a 等价于 c = c % a |
<<= |
左移后赋值 |
c <<= 2 等价于 c = c << 2 |
>>= |
右移后赋值 |
c >>= 2 等价于 c = c >> 2 |
&= |
按位与后赋值 |
c &= 2 等价于 c = c & 2 |
^= |
按位异或后赋值 |
c ^= 2 等价于 c = c ^ 2 |
|= |
按位或后赋值 |
c |= 2 等价于 c = c | 2 |
1.6 其他运算符
运算符 |
术语 |
示例 |
说明 |
& |
取地址运算符 |
&a |
变量a的地址 |
* |
取值运算符 |
*a |
指针变量a所指向内存的值 |
1.7 运算符优先级
在Go语言中,一元运算符拥有最高的优先级,二元运算符的运算方向均是从左至右。
下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:
优先级 |
运算符 |
7 |
^ ! |
6 |
* / % << >> & &^ |
5 |
+ - | ^ |
4 |
== != < <= >= > |
3 |
<- |
2 |
&& |
1 |
|| |
示例:
10 - 2 * 8 - 4 ===> 10 - 16 -4 10 - 2 * (8 - 4) ===> 10 - 8 = 2
go语言基础之运算符的更多相关文章
- C语言基础知识-运算符与表达式
C语言基础知识-运算符与表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用运算符分类 1>.算术运算符 用于处理四则运算. 2>.赋值运算符 用于将表达式的 ...
- GO学习-(6) Go语言基础之运算符
Go语言基础之运算符 运算符用于在程序运行时执行数学或逻辑运算. 运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算数运算符 运算符 描述 + 相加 - ...
- C#-语言基础+数据类型+运算符
一.C#语言基础 新建项目:文件→新建→项目→Visual C#(默认.NET Framework 4.5)→控制台应用程序 1.项目结构 (1)项目后缀 .config ——配置文件(存放配置参数文 ...
- C语言基础学习运算符-赋值运算符
简单赋值 在C语言里,运算符=并不表示相等,而是一个赋值运算符.这意味着,符号=的左边该是一个可修改的变量名,而右边是赋给该变量的值. 如下程序语句: i = i+; 在数学上,该等式无法成立.而作为 ...
- [Python学习笔记1]Python语言基础 数学运算符 字符串 列表
这个系列是我在学习Python语言的过程中记录的笔记,主要是一些知识点汇总,而非学习教程,可供有一定编程基础者参考.文中偏见和不足难以避免,仅供参考,欢迎批评指正. 本系列笔记主要参考文献是官网文档: ...
- C语言基础学习运算符-基本算术运算符
C语言中用于基本算术运算的运算符有:+,-,*,%,/.这些运算符的用法和你想像到的基本无异: 加法运算符 “+”使得它两侧的值被加到一起. 减法运算符“-”用它前面的数减去后面的数. 乘法由“*”表 ...
- C语言基础学习运算符-关系运算符
比较大小 首先,我们得先了解一下布尔类型.C语言的C99标准支持布尔类型,关键字为_Bool,用于表示逻辑值true与false.C语言用值1表示true, 用值0表示false.因此布尔类型实际上是 ...
- Java 语言基础之运算符
使用运算符之后,肯定有返回结果. 六种运算符: 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 三元运算符 1. 算术运算符 加(+), 减(-), 乘(*), 除(/), 取余(%), 自 ...
- 2.1 Go语言基础之运算符
运算符用于在程序运行时执行数学或逻辑运算. 一.运算符 Go 语言内置的运算符有: 1. 算术运算符 2. 关系运算符 3. 逻辑运算符 4. 位运算符 5. 赋值运算符 1.1 算数运算符 运算符 ...
随机推荐
- php简明学习教程
1.变量 <?php //变量声明(php变量无需单独创建,变量会在第一次赋值时创建) $a = 1; //弱类型(php变量会根据其值自动转换为相应的数据类型) $a = "a&qu ...
- 【LOJ】#2351. 「JOI 2017/2018 决赛」毒蛇越狱
题解 没啥特别好的算法,是个讨论题,由于0 1 ?三类数位中最少的不会超过6 如果1不超过6,那么记录\(f1(S)\)为 \(\sum_{T \subset S} val(T)\)这个可以通过类似F ...
- PouchDB:JavaScript同步数据库
简介 PouchDB是受 Apache CouchDB启发为Web设计的一款占用空间少的数据库.PouchDB项目的目标是帮助开发者构建线上和线下都能很好地使用的Web应用程序,在应用程序离线的时候, ...
- Android签名打包详解
一. Android签名有什么作用? 应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名.这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序.如果你采用 ...
- libevent的作用或者说是有哪些功能
1. 介绍 libevent是一个用来开发可扩展的网络服务器的事件通知函数库.当一个文件描述符上的特定事件发生或是一个超时时间到达后,libevent API提供一种执行回调函数的机制.而且,libe ...
- 【SpringBoot】关闭HttpClient无用日志
环境: SpringBoot pom依赖了apache.commons.HttpClient: <!--httpclient--> <dependency> <group ...
- 【SQL】176. Second Highest Salary
Write a SQL query to get the second highest salary from the Employee table. +----+--------+ | Id | S ...
- Can you find it? HDU - 2141 (二分查找)
Give you three sequences of numbers A, B, C, then we give you a number X. Now you need to calculate ...
- 「BZOJ4763」雪辉
「BZOJ4763」天野雪辉 题目大意:有一棵 \(n\) 个点的树,树上每一个点有权值 \(a_i \leq 30000\) ,每次询问给出若干路径,求出这些路径的并上面的不同颜色数与 \(mex\ ...
- [BZOJ 2821] 作诗
Link: BZOJ 2821 传送门 Solution: 一道类似区间众数的经典分块 由于个数为偶数这样的条件不能支持快速合并 因此要先$O(n*sqrt(n))$预处理出$pre[i][j]$表示 ...