PowerShell中的加法运算详解

大家已经PowerShell中的运算符有了一定感性的认识。我们首先来学习“+”运算符。PowerShell定义了“+”运算符处理数值类型、字符串类型、数组类型和哈希表类型的具体行为。在进行数值计算时,“+”和平时的数值计算规则基本一样。不过需要注意,由于计算机内部表示不同数值类型时,使用的存储空间不同,因此这些类型都只能表示一个范围内的数据。在进行数值运算的过程中,如果计算结果超过了参与计算数值类型的值域时,PowerShell将会自动进行类型转换,使用值域更大的数据类型来保存结果。例如:

PS C:\> 9 + 11
20
PS C:\> (9 + 11).GetType().FullName
System.Int32
PS C:\> [int]::MaxValue + 1
2147483648
PS C:\> ([int]::MaxValue + 1).GetType().FullName
System.Double
PS C:\> [int]::MinValue - 1
-2147483649
PS C:\> ([int]::MinValue - 1).GetType().FullName
System.Double

例子中的[int]::MaxValue表示类型int的最大值,如果再执行“+ 1”的运算,就会导致该数值超出int类型的值域,因此PowerShell自动将数据类型转换为Double类型。类似的,[int]::MinValue表示了int类型的最小值。

当对字符串类型操作数使用“+”运算符时,PowerShell将会对字符串进行连接操作,返回一个新的字符串,这种操作在C#语言中、SQL Server数据库的T-SQL语法中是一致的。例如:

PS C:\> "Hello" + " " + "world!"
Hello world!

当对数组类型操作数使用“+”运算符时,将会执行数组连接操作,返回一个新的数组,这与在C#语言中的行为一致。例如:

PS C:\> $array1 = 1,2,3
PS C:\> $array2 = 4,5
PS C:\> $array3 = $array1 + $array2
PS C:\> "$array3"
1 2 3 4 5

例子中首先定义了数组array1,它包含1、2和3这三个元素。接下来用数组array1与数组array2相加,并将返回结果存储在变量array3中。最后,输出数组中的元素到控制台。在PowerShell中,双引号中引用数组时,数组的每个元素将会被存储在变量$ofs中的字符串相互连接,并输出。(“$ofs”的默认值为空格字符)。

当对哈希表类型操作数使用“+”运算符时,PowerShell将把“+”右边的哈希表键值对添加到左边的哈希表中。如果添加的键值已经存在于左边哈希表中,PowerShell就会给出错误提示。例如:

PS C:\> $dev = @{ Tom = 1; Jerry = 2}
PS C:\> $sale = @{ Hero = 1; }
PS C:\> $dev + $sale
Name              Value
----              -----
Tom              1
Jerry             2
Hero              1

例子的开头定义了哈希表dev,它包含了研发部门的员工Tom和Jerry。接下来定义了哈希表sale,员工只有Hero一人。将dev和sale相加后得到包含这三名员工的新哈希表。如果右边哈希表中包含了与左边哈希表相同的键值对,PowerShell将会给出错误信息:

PS C:\> $manager = @{ Tom = 3 }
PS C:\> $dev + $manager
Bad argument to operator '+': 已添加项。字典中的关键字:“Tom”所添加的关键字:“Tom”.
At line:1 char:7
+ $dev + <<<< $manager

在前面的例子中,都是相同类型的对象相加。您可能正在思考,如果在“+”两边不是相同类型的对象,结果到底会是什么呢?下面是一些常见的情况:

PS C:\> 123 + '23'
146
PS C:\> 123 + '0xa'
133
PS C:\> 4 + 'test'
Cannot convert value "test" to type "System.Int32". Error: "Input string was not in a correct format."
At line:1 char:4
+ 4 + <<<< 'test'
PS C:\> '02' + 73
0273

PowerShell在发现“+”运算符时,将会根据左操作数的类型来决定计算的规则。在第一个表达式中123 + '23'中,123是整数,因此“+”执行数值加法运算。但是由于右操作数是字符串类型,因此PowerShell首先对该操作数进行类型转换。所以最后,我们看到结果为数值类型的值:146。第二个例子中,字符串包含了一个整数的十六进制表示形式,PowerShell将该数值正确转换成数值类型并进行计算。第三个例子中,字符串'test'是无法转换为整数类型的,因此PowerShell给出错误信息:“输入串的格式不正确”。第四个例子中,左操作数变成了包含数字的字符串,因此PowerShell执行了字符串的连接操作。

(0)

相关推荐

  • PowerShell中常用的一些特殊运算符介绍

    &,调用运算符. 语法:& <可执行文件路径> [<参数列表>] 举例: 复制代码 代码如下: $execPath="D:\Progra~1\FlashFXP\flashfxp.exe" $execArgs="-upload ftp://u:p@ip:21 " $execArgs=$execArgs+"-remotepath=`"/`" " $execArgs=$execArgs+&qu

  • Windows Powershell 进行数学运算

    PowerShell支持如下算术运算符: 运算符 描述 例子 结果 + 把两个数值相加 6+2  8 - 把两个数值相减 6-2  4 - 将数值转换为对应的负值 -2+6 4 * 把两个数值相乘  6*2 12 / 把两个数值相除 6/2  3 % 返回除法运算的余数 6%4  2 运算符优先级 有一些因素决定了包含算术运算符的表达式如何被处理. 这些因素包括了: 运算符种类, 运算符的顺序, 是否有表达被括号括起来. 例如, 10+4/2返回结果12, 然而(10+4)/2返回结果却是7.

  • PowerShell中使用Like运算符配合通配符查找字符串例子

    本文介绍在PowerShell中使用通配符来查找字符串,和通配符一起使用的是like运算符. 在PowerShell中的通配符是星号(*)和问号(?),这跟DOS系统中是一样的.要使用通配符在字符串中查找,可以使用like运算符.举例如下: "123"是以1开头 复制代码 代码如下: PS C:\Users\splaybow> "123" -like "1*" True "123"是以1开头,3结尾 复制代码 代码如下:

  • PowerShell中的加法运算详解

    大家已经PowerShell中的运算符有了一定感性的认识.我们首先来学习"+"运算符.PowerShell定义了"+"运算符处理数值类型.字符串类型.数组类型和哈希表类型的具体行为.在进行数值计算时,"+"和平时的数值计算规则基本一样.不过需要注意,由于计算机内部表示不同数值类型时,使用的存储空间不同,因此这些类型都只能表示一个范围内的数据.在进行数值运算的过程中,如果计算结果超过了参与计算数值类型的值域时,PowerShell将会自动进行类型转

  • PowerShell中match命令使用详解

    1.筛选数组 本文介绍PowerShell中使用match操作符,配合正则表达式从数组中筛选出想要的内容. 先看下面这个例子: PS C:\Users\Hong> (ipconfig) -match 'IPv4' IPv4 地址 . . . . . . . . . . . . : 192.168.1.102 IPv4 地址 . . . . . . . . . . . . : 192.168.193.1 IPv4 地址 . . . . . . . . . . . . : 192.168.93.1

  • MongoDB中的加减乘除运算详解

    前言 很多同学因为对MongoDB不熟悉,加之应用的不是很多,有时候会认为MongoDB数据库对一些功能不支持,或者认为支持不好.今天我们 演示一下 MongoDB对"加减乘除"的使用. 在MongoDB数据库中"加减乘除"运算,又称为 数学表达式(mathematical expression:或算术表达式),主要用于操作数值. 1.$add操作符(+) 1.1 语法及功能介绍 $add 操作符主要用于将一组数字相加:也可以用于在指定时间上添加一定的时间间隔.时间

  • C# List集合中获取重复值及集合运算详解

    话不多说,直接上实例: 一.获取集合内重复值 public void GetDuplicateValue() { List<string> lisA = new List<string> { "A", "B", "C", "A" }; //方式一 借助字典 Dictionary<string, int> dic = new Dictionary<string, int>(); l

  • Java中BigDecimal的基本运算(详解)

    BigDecimal一共有4个够造方法,让来看看其中比较常用的两种用法: 第一种:BigDecimal(double val) Translates a double into a BigDecimal. 第二种:BigDecimal(String val) Translates the String repre sentation of a BigDecimal into a BigDecimal. 使用BigDecimal要用String来够造,要做一个加法运算,需要先将两个浮点数转为Str

  • iOS逆向工程之Hopper中的ARM指令详解

    虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学.现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少的实验,当时自我感觉ARM这门课学的还是可以的.虽然当时感觉学这门课以后似乎不怎么用的上,可曾想这不就用上了吗,不过之前学的都差不多忘了,还得捡起来呢.ARM指令集是精简指令集,从名字我们就能看出指令的个数比那些负责指令集要少一些.当然本篇所涉及的ARM指令集是冰山一角,不过也算是基础,可以阅读Hopper中的汇编了,实践出真知,看多了自

  • Pytorch Tensor基本数学运算详解

    1. 加法运算 示例代码: import torch # 这两个Tensor加减乘除会对b自动进行Broadcasting a = torch.rand(3, 4) b = torch.rand(4) c1 = a + b c2 = torch.add(a, b) print(c1.shape, c2.shape) print(torch.all(torch.eq(c1, c2))) 输出结果: torch.Size([3, 4]) torch.Size([3, 4]) tensor(1, dt

  • HashMap源码中的位运算符&详解

    引言 最近在读HashMap源码的时候,发现在很多运算符替代常规运算符的现象.比如说用hash & (table.length-1) 来替代取模运算hash&(table.length):用if((e.hash & oldCap) == 0)判断扩容后元素的位置等等. 1.取模运算符%底层原理 ​总所周知,位运算&直接对二进制进行运算:而对于取模运算符%:a % b 相当于 a - a / b * b,底层实际上是除法器,究其根源也是由底层的减法和加法共同完成.所以其运行效

  • JavaScript中的函数式编程详解

    函数式编程 函数式编程是一种编程范式,是一种构建计算机程序结构和元素的风格,它把计算看作是对数学函数的评估,避免了状态的变化和数据的可变,与函数式编程相对的是命令式编程.我们有这样一个需求,给数组的每个数字加一: // 数组每个数字加一, 命令式编程 let arr = [1, 2, 3, 4]; let newArr = []; for(let i = 0; i < arr.length; i++){ newArr.push(arr[i] + 1); } console.log(newArr)

  • Python3中的算术运算符详解

    目录 一·算术运算符 二·代码演示 1·求和 + 2·取差 - 3·相乘 * 4·相除 / 5·取余 % 6·幂运算 ** 7·整除 // 8·优先级混合运算 三·'+'与'*'在序列中的使用 1·拼接合并 + 2·复制 * 一·算术运算符 在python中,算术运算符与数学中的算术运算极为类似,只是有些运算符号有所差别.算术运算符的算术计算一般是运用于int类型与floa类型,同时+与*还可以运用到各种序列的拼接合并与复制中. 优先级:有括号先算括号内的,再乘方>乘除>整除>取余>

随机推荐