[PowerShell教程][11]PowerShell中的加法運算

加法運算

你們已經PowerShell中的運算符有了必定感性的認識。咱們首先來學習「+」運算符。PowerShell定義了「+」運算符處理數值類型、字符串類型、數組類型和哈希表類型的具體行爲。在進行數值計算時,「+」和平時的數值計算規則基本同樣。不過須要注意,因爲計算機內部表示不一樣數值類型時,使用的存儲空間不一樣,所以這些類型都只能表示一個範圍內的數據。在進行數值運算的過程當中,若是計算結果超過了參與計算數值類型的值域時,PowerShell將會自動進行類型轉換,使用值域更大的數據類型來保存結果。例如:數據庫

PS C:/> 9 + 11數組

20學習

PS C:/> (9 + 11).GetType().FullNamespa

System.Int32orm

PS C:/> [int]::MaxValue + 1對象

2147483648字符串

PS C:/> ([int]::MaxValue + 1).GetType().FullNamestring

System.Doubleform

PS C:/> [int]::MinValue - 1test

-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,它包含123這三個元素。接下來用數組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,它包含了研發部門的員工TomJerry。接下來定義了哈希表sale,員工只有Hero一人。將devsale相加後獲得包含這三名員工的新哈希表。若是右邊哈希表中包含了與左邊哈希表相同的鍵值對,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:/> + '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 執行了字符串的鏈接操做。
相關文章
相關標籤/搜索