VFP中的表达式与运算符
的有关信息介绍如下:掌握各种类型表达式的书写方法。
掌握运算符的优先级别。
依次在命令窗口中输入下列表达式,回车运行来输出表达式的值,并分析运行结果。
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.关系表达式
setcollateto“machine”&&设置数据的比较序列为机内码方式
?8>100&&.f.
?“8”>”100”&&.t.
?{^2004-5-19}>{^2003-5-19}&&.t.
?$80<$60&&.f.
?“abc”=”ab”&&.t.系统默认“=”为非精确比较,右边是左边的左子串,则成立。
Setexacton&&设置“=”为精确比较,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”,所以“男”小于“女”。 注意:上述字符的比较规律的前提是必须设置数据的比较序列为机内码方式。设置的命令为:setcollateto“machine”或者依次单击“工具”菜单中的“选项”菜单项,单击“数据”选项卡,设置“排序序列”为“machine”选项即可。 4.逻辑表达式:逻辑运算符的优先级别为:.NOT..AND..OR. ?not(10+3)>5and”ab”$”ab”+”cde”or3>=4&&.f. ?3>2ANDNOT5>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-510:10:20a}-datetime()&&2个日期时间相差的秒的数值 相关知识: (1)一个日期与一个数值相加,&&日期,表示从当前日期往后数N天。 (2)一个日期与一个数值相减,&&日期,表示从当前日期向前数N天。 (3)两个日期相减,&&数值,表示两日期之间相差的天数。