一、算数运算符

**:是幂 结果不能超过数的范围 当指数为小数时 底数不能为负数

%:取余数  两边的操作数为整数,如果不是则要截取,把所有的小数部分去掉 

注意:当一个字符串参加运算,需要转化为整数时,如果不能转化为整数则值为零, '2'+1=3   'a'+1=1

 

二、数字比较运算符

大于小于等于   :比较结果为真或非零 ,假或零

<=> : 比较运算   $a <=> $b

  当a大于b时:值为1

  当a小于b时:值为-1

  当a等于b时:值为0

用这个运算符的时候,自动把操作数转化为整数,不能转化为整数的则值为零

注意:因为浮点数不精确 不要把值相近的数拿来进行比较

 

三、字符串比较

四、字符串连接和重复

.  :点是连接符  $a='a'.'b' -->变为  'ab'

  在print是可以直接写print $a$b - ->效果和这个一样  print $a.$b

x :  重复  (x前后有空格,为了和变量名分开) 'a' x 5 - ->  'aaaaa'

  如果重复次数小于1 则返回空串

 

四、逻辑运算符

&&(and)   ||(or)    !(not)   xor

这个逻辑运算符左右跟的是布尔类型的值   先算左边的 在算右边的

 

五、赋值运算符

$a +=1  - ->等同于$a =$a +1

可以连等 :$a=$b=3  - ->$a =3 $b=3

 

六、自增 自减

++var--    $var2=$var1 +++$var1   #这两种用法是不行的

1、可以用做字符串的自增:$a='az';   $a++ 就变为 $a='ba'

2、不可以用做字符串的自减:当$a--时 按数字运算,将字符串先转化为0再自减

3、当字符串中有数字时,或非字母和数字的符号(比如#$@#$%^),自增也是先变为0再自增

  比如‘ab$c’   'we5a' 

4、预增: $b=++$a  #$a先自增在赋值            #   $a=1  $b =++$a;  $a=2 $b=2

   后增:$b=$a++  #$a先赋值再自增            #   $a=1  $b =$a++;  $a=2 $b=1

 

七、逗号

  就是一个连接的作用:  $a+=1 , $b=$a;     ==>  $a +=1 ; $b=$a;

  没什么卵用

 

八、条件运算符

三个操作数:先对条件表达式运算,为真时执行问号(?)后面的运算,为假时执行冒号(:) 后的运算。

$result = $var == 0 ? 14 : 7   #一般只用于简单的条件 太复杂的就不如if语句看着直观了

 

九、运算符的优先级(precedence)

自增自减最高,单操作数高于多操作数(就是取值、赋值之类的高于加减),数字运算  >  比较运算(大于小于等于什么的,但大于小于(<>)高于等于(==)和不等于(!=))

  >  位运算  >  赋值运算(=)  >   逻辑运算

 

十、结合性(associativity)

结合性associativity:表达式中多个符号是同一优先级时,哪个先算,哪个后算?是先算左边的(左结合性),还是先算右边的(右结合性)

  一般都是左结合性:先算左 再算右

  右结合性:除了(**)以外  、一般根本见不到 

      举个栗子: $a =$b=1    #一起赋值

            $a=$b+=1    #先算b加一  再赋值给a

  当不知道优先顺序时,加括号,解决所有问题