官术网_书友最值得收藏!

2.3 表達式與運算符

表達式指將常量、變量、函數等數據通過運算符連接的式子,根據運算對象的數據類型可以分為算術表達式、字符表達式、日期時間表達式、關系表達式和邏輯表達式。常量、變量和函數可以作為表達式的特例。

2.3.1 算術表達式及算術運算符

算術表達式由算術運算符、數值型常量、數值型內存變量、數值型數組、數值類型的字段和返回值為數值型數據的函數組成,結果為數值型數據。

算術運算符的功能及其運算優先級如表2-1所示,表中運算符按優先級別從高到低順序排列。

表2-1 算術運算符及其優先級

例如,在命令窗口中輸入如下命令:

      ?-4*3^2/3%2+18 &&

顯示結果為18.00。

注意:比較取余%運算在兩個操作數符號相同與相異時的結果。

例如:

      9%7=2            -9%-7=-2
      -9%7=5          9%-7=-5

2.3.2 字符表達式及字符運算符

字符表達式是用字符運算符連接字符型數據的式子,其運算結果仍然是一個字符串或邏輯量,字符運算符有如下兩種。

1.連接運算

(1)+:將兩個字符串連接起來形成一個新的字符串。

(2)-:去掉前一字符串的尾空格,然后與后面字符串連接起來并把去掉的尾空格放到結果串的末尾。

+和-兩種運算符的優先級相同。

例如,在命令窗口中輸入如下命令:

      ?"計算機    "+"應用基礎"    &&結果為計算機    應用基礎
      ?"計算機    "-"應用基礎"    &&結果為計算機應用基礎
      ?"efg  h  "-"ijk"-"lmn"        &&結果為efg  hijklmn

2.包含運算

包含運算的結果是邏輯值,一般格式為:

      <字符串1>$<字符串2>

若<字符串1>包含在<字符串2>之中,其表達式值為.T.;否則為.F.。

例如,在命令窗口中輸入如下命令:

      m= "工程師"
      ? "總工程師"$m, m$"總工程師"    &&結果為.F. .T.

2.3.3 日期時間表達式及日期運算符

日期時間表達式指含有日期型或日期時間型數據的表達式,其運算符只有+和-,合法的日期時間表達式如表2-2所示。

表2-2 合法的日期時間表達式

注意:日期(日期時間型)和日期(日期時間型)相加無意義且出錯。

例如,在命令窗口中輸入如下命令:

      ?{^2018/08/13}+3     &&結果為08/16/18
      ?{^2018/08/13}-3     &&結果為08/10/18
      ?{^2018/08/16}-{^2018/08/10}    &&結果為6
      ?{^2018/08/13 10:00}-{^2018/08/13 9:00}  &&結果為3600

2.3.4 關系表達式及關系運算符

關系表達式是由關系運算符將兩個相同類型(可以是字符型、數值型和日期型)的數據連接起來的式子,一般格式為:

      <表達式1><關系運算符><表達式2>

關系運算可以執行數值比較、字符比較和日期比較,運算結果是邏輯.T.或.F.。關系運算符的優先級相同,其說明如表2-3所示。

表2-3 關系運算符及其說明

各種數據類型的比較規則如下。

(1)數值型數據和貨幣型數據按數值大小比較,包括負號。

(2)日期時間型數據按年、月、日的先后比較,越早的日期時間越小;越晚的日期時間越大。

(3)邏輯型數據比較.T.比.F.大。

(4)字符型數據按選擇“工具”菜單中“選項”選項的設置比較,默認的字符排序次序為“PinYin”。西文字符比較時空格在最前面,小寫字母在前,大寫字母在后;漢字則按拼音順序比較。

比較字符串時,先比較兩個字符串的第1個字符。若兩者不等,其大小決定兩字符串的大小;若相等,則各取第二個字符比較,依此類推直到最后。若每個字符都相等,則兩個字符串相等。

(5)精確等于“==”,只有在兩個字符串完全相同時才為真;非精確等于“=”,當等號右邊的串與等號左邊的串的前幾個字符相同時,運算結果才為真。

例如,在命令窗口中輸入命令:

      gb="班長    "
      ?gb="班長"              &&結果為.T.
      ?"班長"=gb              &&結果為.F.
      ?gb=="班長"             &&結果為.F.
      ?"班長"==LEFT(gb,4)    &&結果為.T.

2.3.5 邏輯表達式及邏輯運算符

邏輯表達式是由邏輯運算符將邏輯型數據連接起來的式子,它實際上是一個判斷條件,結果為一個邏輯值。其一般格式為:

      <關系表達式1><邏輯運算符><關系表達式2>

邏輯運算符的優先級與說明如表2-4所示,表中運算符按優先級別從高到低順序排列。

表2-4 邏輯運算符的優先級與說明

說明如下。

(1)運算符兩邊可以有小圓點,也可以無小圓點。

(2)NOT是單目運算,只作用于后面的一個邏輯操作數。若操作數為真,則NOT操作數返回假;否則返回真。

(3)AND是雙目運算,即操作數1 AND操作數2。若操作數1和操作數2同時為真,則表達式值為真;只要其中一個為假,則表達式值為假。

(4)OR是雙目運算,即操作數1 O R操作數2。若操作數1和操作數2中有一個為真,則表達式值為真;只有操作1和操作2均為假時,則表達式值為假。

例如,在命令窗口中輸入如下命令:

      M=7
      N=9
      ?M>9 OR N=9    &&結果為.T.
      ?M<>6 OR N>6 AND NOT M>6  &&結果為.T.

2.3.6 運算符的優先級

同種類型運算符內部之間的優先級如前所述,不同類型運算符在同一個表達式中的優先順序為算術運算符→字符串運算符→日期運算符→關系運算符→邏輯運算符;另外表達式中可以用括號改變運算的優先次序,并且括號是可以嵌套的。

主站蜘蛛池模板: 杨浦区| 日照市| 凤山县| 梁平县| 富宁县| 新源县| 武乡县| 抚松县| 文登市| 海伦市| 北宁市| 冷水江市| 乡城县| 白河县| 那曲县| 武城县| 苗栗市| 石棉县| 青阳县| 弥勒县| 敖汉旗| 嘉义市| 大安市| 德保县| 原平市| 泰来县| 华阴市| 凤阳县| 西林县| 玛纳斯县| 鞍山市| 拉萨市| 家居| 柏乡县| 桦甸市| 夏邑县| 凭祥市| 蒲城县| 沧源| 南投县| 嵊州市|