算数运算符细节讨论|学习笔记

简介: 本节课来看算术运算符的细节。

开发者学堂课程【GO 语言核心编程-基础语法、数组、切片、Map:算数运算符细节讨论】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9542


算数运算符细节讨论

 

目录

一、 算术运算符细节说明

二、 案例

三、 课堂练习

 

本节课来看算术运算符的细节。

 

一、算术运算符细节说明

在 go 语言里使用算术运算符的时候,需要注意有以下5点: 

1. 对于除号"/",它的整数除和小数除是有区别的:整数之间做除法 

时,只保留整数部分而舍弃小数部分。例如:x=19/5 ,结果是3

// x=19/5本身结果为3.8,四舍五入为4,又因为两个值均为整数,最后结果必须为整数,则小数部分去除。

2.当对一个数取模时,可以等价 a%b=a-a/b*b,这样可以看到取模的一个本质运算。

3.Golang 的自增自减只能当做一个独立语言使用时,不能这样使用 b := a++或者 b := a--

4.Golang 的++和--只能写在变量的后面,不能写在变量的前面,即:只有 a++ a-没有++a –-a

5.Golang 的设计者去掉 c / java 中的自增自减的容易混淆的写法,让 Golang 更加简洁,统一。(强制性的)

// 容易产生混淆,歧义的地方尽量避免,做简化操作。

 

二、案例

(1)对于除号"/",它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如:x=19/5 ,结果是3

(2)当对一个数取模时,可以等价 a%b=a-a/b*b,这样可以看到取模的一个本质运算。

(3)Golang 的自增自减只能当做一个独立语言使用时,不能这样使用 b := a++或者 b := a--

在 chapter04文件夹中新建 demo02,再次新建文件 main.go。将结构拷贝过来,代码如下:

package main

import (

“fmt”

)

func main(){

//在 golang 中,++和--只能独立使用

var i int = 8

var a int

a = i++  //错误i++只能独立使用

a = i--  //错误i--只能独立使用

//若想使用 a = i++,则先赋于i++,随后即可使用;a = i--同样如此。

if i++ > 0 {

fmt.Println( “ok”)

}

如上语法在很多语言中是支持的,将某一个值++后与某一值对比是常见的,但是在 Golang 不被允许,原因在于保存之后会提示错误!若将++去除,就不会提示错误。

综上:

均不可行!所以在 golang 中,++和 --只能独立使用。这是 golang 中的强制性语法,从 golang 设计者角度,因为在初学者眼中,++与--是令人厌烦的,运算完还需进行判断。所以变为独立使用。例如:先完成 i++,再进行比较,强制语法的统一性和简洁性,减少歧义。

接下来看下一个:

(4) Golang 的++和--只能写在变量的后面,不能写在变量的前面,即:只有 a++ a--没有++a -–a

这里体现出设计者强制语言不要有歧义的设计理念。意思就是并不需要整理出复杂的东西,要给人一目了然的。

例如:

var i int = 1

i++  //正确

输出:

fmt.Println(“i=”,i)

}

在 cmd.exe 里输入以下命令回车:

cd  ..\demo02

go run main.go

输出结果:

i=2

可以看到 i=2,正确。但是不能如此操作!

i++后进行++i  //大多数编程语言中可进行,但是这种情况会出现报错!

++i //错误,在 golang 没有前++

i--  //正确

--i  //错误,在 golang 没有前--

fmt.println(“i=”,i)

所以++i 与--i 这2种写法是错误的。

 

三、课堂练习

课堂练习题1

1. Var i int = 1

i=i++  // i=i++ 这是一个错误的代码,所以不会产生任何结果

//编译不通过

fmt.Println(i);

//问结果是多少为什么

//上面的代码时错误编译不通过i = i++

2. Var i int= 10  //第一行内容正确

if i++ >10 {  //错误,因为违背了i++是独立使用的

fmt.Println(“ok”)

}

//问结果是多少为什么

//上面的代码时错误编译不通过i++ >10

关于课堂练习就讲解到这里。

本节课关于使用运算符的注意事项和课堂练习1就介绍到这里。

相关文章
|
8月前
|
存储 人工智能 编译器
【重学C++】【指针】一文看透:指针中容易混淆的四个概念、算数运算以及使用场景中容易忽视的细节
【重学C++】【指针】一文看透:指针中容易混淆的四个概念、算数运算以及使用场景中容易忽视的细节
117 1
|
8月前
|
存储 编译器
有趣的移位操作符和位操作符(由浅入深轻松搞定!)
有趣的移位操作符和位操作符(由浅入深轻松搞定!)
|
编译器 C语言
《C和指针》读书笔记(第五章 操作符和表达式)
《C和指针》读书笔记(第五章 操作符和表达式)
|
存储 编译器 C语言
初阶C语言 第四章-------《操作符》 (逻辑操作符,算术操作符,逗号表达式,三目操作符)知识点+基本练习题+深入细节+通俗易懂+完整思维导图+建议收藏
初阶C语言 第四章-------《操作符》 (逻辑操作符,算术操作符,逗号表达式,三目操作符)知识点+基本练习题+深入细节+通俗易懂+完整思维导图+建议收藏
|
存储 C语言 索引
【C】操作符归纳+表达式运算原理
【C】操作符归纳+表达式运算原理
242 0
【C】操作符归纳+表达式运算原理
|
存储 编译器 C语言
【一篇文章带你重温重点】C语言操作符
【一篇文章带你重温重点】C语言操作符
104 0
|
人工智能 Java 程序员
运算符特别说明|学习笔记
快速学习运算符特别说明。
107 0
|
存储 C语言
C语言——操作符 (超详细归纳!!!)(上)
C语言——操作符 (超详细归纳!!!)(上)
106 0
C语言——操作符 (超详细归纳!!!)(上)
|
存储 编译器 Linux
C语言——操作符 (超详细归纳!!!)(下)
C语言——操作符 (超详细归纳!!!)(下)
178 0
C语言——操作符 (超详细归纳!!!)(下)

热门文章

最新文章

下一篇
开通oss服务