zhang-snail

导航

 

(7)Powershell算术运算符

本系列博客从这一节开始是Powershell的语法知识,在开始学习语法之前,希望你对Powershell有个基本的了解,比如开发工具的使用,面向对象等特性,详细内容使劲戳这里(1)-(6)的内容。

本节主要介绍Powershell中的算术运算符。

  • Powershell支持以下算术运算符
运算符 用法 例子 注意事项
+ 将整数相加;连接字符串、数组和哈希表。 2+5;"str1"+"str2" Powershell是进行算数相加还是字符串的连接是以第一个操作数的类型为准
- 两个值相减 2-1;(Get-Date).Day-1
- 对数字取负 -2+1
* 将整数相乘;按指定次数复制字符串和数组 23;"str"3 返回输入字符串的多个副本
/ 将两个值相除 4/2
% 取余(返回除法运算的余数)

下面是这些算术运算符的优先级

圆括号() > 取负数(-) > *, /, % > 加减法

注意:如果记住这些优先级太有挑战性,就了解下,只要知道括号有最高的优先级就可以了。不要写那些运算顺序含混不清的代码(脚本或是命令)。分辨清晰与否的标志就是,无论何时,你都应当可以准确表述算数的运算顺序。


下面是在Powershell中使用算数运算符的例子

PS C:\WINDOWS\system32> 1+2
3
PS C:\WINDOWS\system32> 2-1
1
PS C:\WINDOWS\system32> -7+4
-3
PS C:\WINDOWS\system32> 3*7
21
PS C:\WINDOWS\system32> 7/3
2.33333333333333
PS C:\WINDOWS\system32> 7%3
1
PS C:\WINDOWS\system32> "str"*2
strstr
PS C:\WINDOWS\system32> "Windows"+" "+"Powershell"
Windows Powershell



  • Powershell加法和乘法不是严格可交换的

    在上面我们提到,对于运算符"+",Powershell是进行相加还是字符串的连接是以第一个操作数的类型为准的。举个例子
PS C:\WINDOWS\system32> "file1"+1
file11

PS C:\WINDOWS\system32> 1+"file1"
Cannot convert value "file1" to type "System.Int32". Error: "Input string was not in a correct format."
At line:1 char:1
+ 1+"file1"
+ ~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvalidCastFromStringToInteger

对于乘法运算符"*",同样以第一个操作数的类型为准
PS C:\WINDOWS\system32> "str"*2
strstr
PS C:\WINDOWS\system32> 2*"str"
Cannot convert value "str" to type "System.Int32". Error: "Input string was not in a correct format."
At line:1 char:1
+ 2*"str"
+ ~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvalidCastFromStringToInteger


由以上演示结果可知,在Powershell中,加法和乘法不是严格可交换的,换句话说,Powershell中,(a + b) 并不总是等于 (b + a),而 (a * b) 也不总是等于 (b * a)


除此之外,Powershell中的加法"+"对数组和哈希表也可以操作,会在数组节做详细讨论。
posted on 2024-01-18 16:34  zhang-snail  阅读(48)  评论(0编辑  收藏  举报