1. 程式人生 > >數值計算

數值計算


    批處理裡面的數值計算功能較弱,只能夠進行整型計算,忽略浮點數的小數部分;同時數值計算的範圍也受限於系統位數,對於目前較為常見的32位機來說,數值計算能處理的數值範圍為0x80000000h~0x7FFFFFFFh,即-2147483648~+2147483647。
    數值計算需要使用set命令,具體格式為“set /a expression”。其中,expression代表計算表示式,計算表示式跟C語言裡面的表示式基本上完全一致。set支援的運算子也跟C語言裡面的一樣,只是沒有了増一減一。set支援的運算子及優先順序排序如下:
=========================================
    ()                  - 分組
    ! ~ -               - 一元運算子(邏輯非、按位非、取負)
    * / %               - 算數運算子(乘、除得商、除得餘數,即取餘)
    + -                 - 算數運算子(加、減)
    << >>               - 邏輯移位(左移一位、右移一位)
    &                   - 按位“與”
    ^                   - 按位“異”
    |                   - 按位“或”
    = *= /= %= += -=    - 賦值
      &= ^= |= <<= >>=
    ,                   - 表示式分隔符(set可一次處理多個表示式)
=========================================
    我們知道,批處理中取變數的值是需要用%或者!的,而在set /a 中,直接用變數名稱即可取得變數的值。另外,set支援八進位制(數字字首0)、十進位制(數字無字首)和十六進位制(數字字首0x),且支援不同進位制之間的計算,如set /a a=123+0123+0x123,計算及顯示結果為十進位制。

@echo off
set /a a=123+0123+0x123
echo %a%
pause