首先了解下什么是运算符,都有哪些运算符。实际当中大家常见到的可能是算术运算符和比较运算符,适用于各种运算场景,是不是很常见呢。今天要说的就是算术运算符中的 ++ 和 --,分别有什么作用呢。其实 ++相当于 +( 加法),-- 相当于 - (减法), 在语言版本当中就被叫做自增 和自减运算符。
1、优先级
不管在什么语言中,运算符都有优先级,那么自增和自减运算符处于什么级别呢,它们处于第三级当中,优先级决定了运算的结合方向,从而先运算哪个部分,再运算哪个部分,运算符优先级一览表:
优先级 | 结合方向 | 运算符 | 附加信息 |
---|---|---|---|
1 | 无结合 | clone、new | clone 和 new |
2 | 从右向左 | ** | 算术运算符 |
3 | 从右向左 | ++、--、~、(int)、(float)、(string)、(array)、(object)、(bool)、@ | 类型、递增/递减、错误控制 |
4 | 无结合 | instanceof | 类型 |
5 | 从右向左 | ! | 逻辑运算符 |
6 | 从左向右 | *、/、% | 算术运算符 |
7 | 从左向右 | +、-、. | 算术运算符和字符串运算符 |
8 | 从左向右 | <<、>> | 位运算符 |
9 | 无结合 | <、<=、>、>= | 比较运算符 |
10 | 无结合 | ==、!=、===、!==、<>、<=> | 比较运算符 |
11 | 从左向右 | & | 位运算符和引用 |
12 | 从左向右 | ^ | 位运算符 |
13 | 从左向右 | | | 位运算符 |
14 | 从左向右 | && | 逻辑运算符 |
15 | 从左向右 | || | 逻辑运算符 |
16 | 从右向左 | ?? | null 合并运算符 |
17 | 从左向右 | ? : | 三元运算符 |
18 | 从右向左 | =、+=、-=、*=、**=、/=、.=、%=、&=、|=、^=、<<=、>>= | 赋值运算符 |
19 | 从左向右 | and | 逻辑运算符 |
20 | 从左向右 | xor | 逻辑运算符 |
21 | 从左向右 | or | 逻辑运算符 |
2、属于单目还是双目
在语言当中运算符分为两种单目运算符和双目运算符,单目运算符又叫一元运算符(需要一个变量进行运算),双目运算符又叫二元运算符(需要两个变量进行运算),通过分析是属于单目运算符。其实还有三元运算符,这里就不多介绍了。
3、结合方向
上述表格可以看出是从右向左的,其实在运算当中,自增、自减是可以出现在变量的左边和右边,各表示的意义都有不同。
4、运算操作
例1:单个运算符进行运算(1)
<?php $a = 1; $b = 2; echo "a=".++$a.",b=".--$b; //输出 a=2,b=1
为啥是a=2,b=1呢,来看看,自动运算的过程是这样,自增和自减都是出现在变量的左边,首先 取变量$a,$b的值,然后 进行自增 加1,自减减1,最后执行echo输出$a,$b的值。
例2: 单个运算符进行运算(2)
<?php $a = 1; $b = 2; echo "a=".$a++.",b=".$b--; //输出 a=1,b=2
咦,大家肯定很纳闷,为什么$a,$b输出是1,2,而不是2,1呢。其实关键就在于运算符出现的位置,这次是在变量的右边,例1是在变量左边。过程其实也很简单,首先都是先取$a,$b的值,然后将值赋值给输出的$a,$b,执行echo,最后一步才是$a,$b进行自增加1,自减减1。
例3:多个运算符的运算
<?php $a = 1; $b = 2; $c = ++$a + $b--; echo "c=" . $c. ",b=" . $b; //输出 c=4,b=1
对于这个大家相对来说应该会清楚了吧,输出结果为4。首先$a自增加1,然后取$b的值为2,之后执行加法运算值为4,最后将4赋值给 $c 后,$b在减1,如果要输出$b的值,那么为1。
例4:运用于循环(for/while)
<?php for($i=1;$i<5;$i++) { echo 'i='.$i; } //输出 i=1i=2i=3i=4
for循环中大家应该都清楚运算规则,先 $i=1,比较 1<5,成立执行echo语句,输出i=1,输出后,再执行$i++,此时$i=2,再 执行 $i<5,变成2<5 ,成立执行echo语句,再输出$i,依此类推,当 $i=5时,条件不成立,程序终止执行。while的用法就不多介绍,与for相似。
好了,就介绍到这里了,看了后是不是更加了解呢?