掌握各種類型表達式的書寫方法。
掌握運算符的優先級別。
方法/步驟
依次在命令窗口中輸入下列表達式,回車運行來輸出表達式的值,並分析運行結果。
1.數值表達式
? -3**2 &&9 負號的運算級別高於乘方
? (3+4)/2^2+int(12.5) &&13.75
相關知識:
(1)書寫數值表達式,乘號一定不能省略。
(2)數值表達式是由算術運算符和數值型常數、變量、函數組成,運算結果為數值型數據。算術運算符為:+ - * / % ^ ( ) 。
(3)算術運算符的優先次序由高到低依次為:括號、負號、乘方、乘除、模運算(取餘)、加減,同級運算從左到右依次進行。
2.字符表達式
? “abc**”+”*cd*” &&abc***cd* *為空格,+號為字符串完全連接運算
?“abc**”-”*cd*” &&abc*cd*** *為空格,-號為字符串不完全連接運算
相關知識:
(1)字符表達式是由字符運算符和字符型常數(即用定界符括起來的字符串)、變量、函數組成,運算結果是字符型數據或邏輯值。
(2)二種字符串運算符,優先級別相同。
(3)完全連接是指兩個字符串合併,即包括空格在內的字符串中所有字符相加。不完全連接運算是將串1尾部的空格移到串2的尾部後,再連接。
3.關係表達式
set collate to “machine” &&設置數據的比較序列為機內碼方式
? 8>100 &&.f.
? “8”>”100” &&.t.
? {^2004-5-19}>{^2003-5-19} && .t.
? $80<$60 &&.f.
? “abc”=”ab” &&.t. 系統默認“=”為非精確比較,右邊是左邊的左子串,則成立。
Set exact on &&設置“=”為精確比較,off為非精確比較
“abc”=”ab” && .f. 精確比較要求兩邊的字符串必須完全相等才成立。
? “ok”$”abokd” &&.t. 前一個串“ok”包含在後一個串中,返回邏輯真
相關知識:
(1)關係表達式描述的同類數據的大小比較關係,其結果是一個邏輯值,關係成立結果取真(.T.),不成立結果取假(.F.)。
(2)關係運算符兩邊的數據類型要一致,只有同類型的數據才能進行比較。
(3)數據比較規律
①數值和貨幣類型:數越大,其值越大。如:1000>800 $90>$10
②日期數據:未來>歷史 如:{^2007-5-19}>{^2007-5-18}
③邏輯常量:邏輯真大於邏輯假,即:.t.>.f.
④字符串比較:依次對應比較兩個串的字符,直到比較出結果即停止比較。例如:"abc">"ab", "abc">"aBc"。
⑤字符的比較規律
ASCII字符:比較字符的ASCII碼值的大小。總結規律為:空格<0-9
漢字字符:是按照漢字的機內碼值的大小來進行比較的,即比較漢字的拼音字符串的大小。例如:漢字“男”的拼音為“nan”, 漢字“女”拼音為“nv”,所以“男”小於“女”。
注意:上述字符的比較規律的前提是必須設置數據的比較序列為機內碼方式。設置的命令為:set collate to “machine” 或者依次單擊“工具”菜單中的“選項”菜單項,單擊“數據”選項卡,設置“排序序列”為“machine”選項即可。
4.邏輯表達式:邏輯運算符的優先級別為:.NOT. .AND. .OR.
? not(10+3)>5 and ”ab”$”ab”+”cde” or 3>=4 &&.f.
? 3>2 AND NOT 5>6 &&
相關知識:
(1)當表達式中出現了多種運算符時,各種運算符的優先順序由高到低依次為:
算術或字符或日期運算→關係運算→邏輯運算
(2)相同優先級的運算按從左到右的順序計算
5.日期和日期時間表達式
? {^2005-3-29}-{^2005-3-21} &&8 兩日期相差的天數為8天
? {^2005-3-29}+{^2005-3-21} && 兩日期表達式相加,屬非法表達式
? {^2005-3-25}+3 &&{^2005-3-28}
? {^2005-3-25}-3 &&{^2005-3-22} (用嚴格日期格式表示)
? datetime()+30 &&其值為當前時間的30秒後的日期時間
? datetime()-30 &&其值為當前時間的30秒以前的日期時間
? {^2005-5-5 10:10:20 a}-datetime() &&2個日期時間相差的秒的數值
相關知識:
(1)一個日期與一個數值相加,&&日期,表示從當前日期往後數N天。
(2)一個日期與一個數值相減,&&日期,表示從當前日期向前數N天。
(3)兩個日期相減,&&數值,表示兩日期之間相差的天數。