首页 百科知识 逻辑运算中各运算符的优先顺序

逻辑运算中各运算符的优先顺序

时间:2024-08-25 百科知识 版权反馈
【摘要】:比较运算符的优先级是相同的。关系运算符两侧还可以是其他的表达式,如数值表达式、字符串表达式,其两侧的数据类型必须一致。将常量和变量用运算符连接在一起所构成的式子就是表达式。其中,各个比较运算符的优先级相同,按从左到右的顺序处理。Access的运算符优先级如表7-10所示。

7.3.9 运算符与表达式

表达式是将变量、常量、函数等程序元素通过运算符及括号等连接起来的式子。每个表达式按照运算符的运算规则进行运算,并最终得到一个运算结果。也就是最终得到表达式的值。表达式值的类型与表达式的类型有关,表达式的类型分为若干类,常见的有算术表达式、字符串表达式、日期表达式、关系表达式、逻辑表达式等。

在VBA编程语言中,根据运算不同,可以将运算符及表达式分成以下几种类型。

1.算术运算符

用于算术运算,组成数学表达式,参加运算的对象为数值类型,最终运算结果也为数值类型,包括加(+)、减(−)、乘幂(^)、乘(*)、浮点除(/)、整除(\)、求模(mod)7个双目运算符及取负(−)1个单目运算符。这些运算符的含义与数学中的基本相同。

①加法运算,如1+2、a+b。

②减法运算,如2−1、a−b。

③乘法运算,如2*2、a*b。

④浮点除运算,如5/2、a/b,运算结果带小数,如5/2结果为2.5。

⑤整除运算,如5\2、a\b,运算结果为整数,如5\2结果为2。

⑥乘幂运算,如2^2、a^2。

⑦求模运算,如13 mod 2。求模运算实际上也就是求余数,其结果为第一个操作数除以第二个操作数所得余数,如13 mod 2余数为1。

在书写算术表达式时,应注意以下问题:

①乘法运算符不能省略,如x*2不能写成x2,如果省略“*”,那就变成变量了;

②算术表达式中只有小括号,没有中括号或大括号,如2*(3+5)不能写成2*[3+5]或2*{3+5}。

算术运算符的优先级

在同一个算术表达式中,如果出现了多个算术运算符,如:2+3*4,按数学中的规则,应该先算乘再算加,同样在VBA编程中,也有符号的优先级问题,所谓优先级就是谁先谁后运算的顺序问题,优先级高就先运算,优先级低就后运算,在VBA中上述算术运算符按从高到低的优先顺序为:

^(幂)→−(取负)→*(乘)或/(浮点除)→\(整除)→mod(求模)→+(加)或−(减)

其中乘和浮点除及加和减是同级运算符,同级运算符按从左向右运行。如果表达式中含有括号,则先计算括号内表达式的值。如果有多层括号,先计算最里层括号中的表达式。例如:

3*6/4−8+(2+2^2)

按优先级规则先运算(2+2^2),在括号中又要先运算2^2的值,括号里的值为6,再计算3*6/4,结果为4.5。最后结果为4.5−8+6,最终整个表达式的运算结果为2.5。

2.连接运算符

具有连接字符串的功能。有“&”和“+”两个运算符。例如:

“北京”&“欢迎您!”表达式结果为“北京欢迎您!”

“北京” +“欢迎您!”表达式结果为“北京欢迎您!”。

注意:

“+”运算符在两个运算对象都是数值类型时进行算术加法运算;在两个运算对象都是字符串时进行字符串连接运算;在一个运算对象是数值而另一个运算对象是数字字符串时,“+”运算符会将数字字符串转换为数值进行算术加法运算。例如:“123”+2 表达式结果为数值125

“&”运算符在两个运算对象都是字符串时进行字符串连接运算;在一个运算对象是数值而另一个运算对象是字符串时,“&”运算符会将数值转换为字符串进行字符串连接运算。例如:“123”&2 表达式运算结果为“123 2”。

3.比较运算符

用来表示两个或多个值或表达式之间的大小关系,有相等(=)、不等(<>)、小于(<)、大于(>)、小于等于(<=)、大于等于(>=)6个运算符,比较结果为一个布尔值真(True)或假(False)。

比较运算符的优先级是相同的。关系运算符两侧还可以是其他的表达式,如数值表达式、字符串表达式,其两侧的数据类型必须一致。如:

img375

但有个特例,因布尔值True和数值−1可以相互转换,False和数值0可以相互转换,因此布尔值和数值是可以比较的。如:

True>2

false=0 

一个表达式中如果有两个以上的比较运算符,将按从左到右的顺序进行运算,如:2>1<3,该表达式运行顺序是先运行2>1结果为True,True可以转换为−1,接着运行True<3,实际就是−1<3,最终结果为True。

注意:

(1)关系运算符优先级低于算术运算符,即在同时有算术运行符和比较运算符的表达式中,先运行算术运算符后运行比较运算符,如:

1+2>3*4

该表达式的运行顺序是先运行3*4得12,再运行1+2得3,最后运行3>12,结果为False(假)。

(2)数值型数据按其数值大小进行比较,如2比1大,日期型数据后面的日期比前面的日期大,如#1992-3-1#比#1992-2-20#大,英文字符串按其ASCII码值进行比较,如‘a’小于‘b’,汉字按拼音次序比较大小,如“安”<“的”。

(3)比较运算符中有些符号不能直接输入,如≤、≥要写成<=、>=。

4.逻辑运算

用于逻辑运算,主要有与(And)、或(or)、非(Not)3个运算符。逻辑运算的结果是True(真)或False(假)。

1)And(逻辑与)运算

对两个逻辑值进行与运算,两个逻辑值都为真时,结果才为真,否则为假。如:

img376

2)Or或运算

对两个逻辑值进行与运算,两个逻辑值只要有一个为真,结果就为真,否则为假。如:

img377

3)Not非运算

逻辑值由真变假或由假变真,进行取反操作。如:

img378

逻辑运算符的优先级为:Not→And→Or,逻辑运算符的优先级是最低的,低于关系运算符,更低于算术运算符。

逻辑运算符真值表如表7-9所示。

表7-9 逻辑运算符真值表

img379

5.表达式和优先级

将常量和变量用运算符连接在一起所构成的式子就是表达式。当一个表达式由多个运算符连接在一起时,运算进行的先后顺序是由运算符的优先级决定的。优先级高的运算先进行,优先级相同的运算依照从左向右的顺序进行。运算符的优先级顺序为:算术运算、连接运算、比较运算、逻辑运算。其中,各个比较运算符的优先级相同,按从左到右的顺序处理。括号优先级最高,可以用括号改变优先顺序,强令表达式的某些部分优先运行。Access的运算符优先级如表7-10所示。

表7-10 运算符的优先级

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈