- Visual FoxPro程序設計
- 黃玲芳 劉建蘭主編
- 1772字
- 2019-07-25 11:48:23
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 運算符的優先級
同種類型運算符內部之間的優先級如前所述,不同類型運算符在同一個表達式中的優先順序為算術運算符→字符串運算符→日期運算符→關系運算符→邏輯運算符;另外表達式中可以用括號改變運算的優先次序,并且括號是可以嵌套的。
- Java EE 6 企業級應用開發教程
- C# Programming Cookbook
- 程序員面試算法寶典
- 基于免疫進化的算法及應用研究
- Python 3網絡爬蟲實戰
- HTML5+CSS3網站設計教程
- HDInsight Essentials(Second Edition)
- 程序員修煉之道:通向務實的最高境界(第2版)
- Microsoft Azure Storage Essentials
- Creating Data Stories with Tableau Public
- Buildbox 2.x Game Development
- Visual Studio Code 權威指南
- 網絡數據采集技術:Java網絡爬蟲實戰
- 貫通Tomcat開發
- ABAQUS6.14中文版有限元分析與實例詳解