PowerShell中的加法運算詳解_PowerShell

來源:互聯網
上載者:User

大家已經PowerShell中的運算子有了一定感性的認識。我們首先來學習“+”運算子。PowerShell定義了“+”運算子處理數實值型別、字串類型、數群組類型和雜湊表類型的具體行為。在進行數值計算時,“+”和平時的數值計算規則基本一樣。不過需要注意,由於電腦內部表示不同數實值型別時,使用的儲存空間不同,因此這些類型都只能表示一個範圍內的資料。在進行數值運算的過程中,如果計算結果超過了參與計算數實值型別的範圍時,PowerShell將會自動進行類型轉換,使用範圍更大的資料類型來儲存結果。例如:

PS C:\> 9 + 1120PS C:\> (9 + 11).GetType().FullNameSystem.Int32PS C:\> [int]::MaxValue + 12147483648PS C:\> ([int]::MaxValue + 1).GetType().FullNameSystem.DoublePS C:\> [int]::MinValue - 1-2147483649PS C:\> ([int]::MinValue - 1).GetType().FullNameSystem.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,3PS C:\> $array2 = 4,5PS C:\> $array3 = $array1 + $array2PS 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 + $saleName              Value----              -----Tom              1Jerry             2Hero              1

例子的開頭定義了雜湊表dev,它包含了研發部門的員工Tom和Jerry。接下來定義了雜湊表sale,員工只有Hero一人。將dev和sale相加後得到包含這三名員工的新雜湊表。如果右邊雜湊表中包含了與左邊雜湊表相同的索引值對,PowerShell將會給出錯誤資訊:

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

在前面的例子中,都是相同類型的對象相加。您可能正在思考,如果在“+”兩邊不是相同類型的對象,結果到底會是什麼呢?下面是一些常見的情況:

PS C:\> 123 + '23'146PS C:\> 123 + '0xa'133PS 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' + 730273

PowerShell在發現“+”運算子時,將會根據左運算元的類型來決定計算的規則。在第一個運算式中123 + '23'中,123是整數,因此“+”執行數值加法運算。但是由於右運算元是字串類型,因此PowerShell首先對該運算元進行類型轉換。所以最後,我們看到結果為數實值型別的值:146。第二個例子中,字串包含了一個整數的十六進位表示形式,PowerShell將該數值正確轉換成數實值型別並進行計算。第三個例子中,字串'test'是無法轉換為整數類型的,因此PowerShell給出錯誤資訊:“輸入串的格式不正確”。第四個例子中,左運算元變成了包含數位字串,因此PowerShell執行了字串的串連操作。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.