Perl增量运算符

前端之家收集整理的这篇文章主要介绍了Perl增量运算符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
$a = 10; 
$b = (++$a) + (++$a) + (++$a);
print $b;

我得到答案37.
任何人都可以解释这个操作如何进行,结果如何得到37.

按照我的逻辑,应该是36:

(++$a) + (++$a) + (++$a)
   11  +    12  +    13  = 36

但是我得到了答案37

解决方法

Perl正在执行此操作
( ( $a = $a + 1 ) + ( $a = $a + 1 ) ) + ( $a = $a + 1 )

你甚至将$a放在括号中,以便说在应用前必须首先发布它们,尽管它们的优先级还是比较高的

这主要围绕赋值运算符=返回其第一个操作数,这允许操作像这样的事实

(my $x = $y) =~ tr/A-Z/a-z/

如果赋值的结果是从$y复制到$x的值,那么tr ///将导致不能修改常量项或等价项,并且它对存储在任一变量中的内容都没有影响

这里是变量$a,执行如下

>执行第一个增量,返回$a
$a现在是11
>执行第二个增量,再次返回$a
$a现在是12
>执行第一个加法,其中增加了两个增量返回的值,这两个增量都是$a
$a是12,所以$a $a是24
>执行第三个增量,再次返回$a
$a现在是13
>执行第二个加法,它添加了第一个加法(24)和第三个增量($a)返回的内容,
$a是13,所以24 $a是37

请注意,这不应该依赖.除了说我们未定义之外,它没有记录在任何地方,并且行为可能随着Perl的任何版本而改变

原文链接:https://www.f2er.com/Perl/171471.html

猜你在找的Perl相关文章