gpt4 book ai didi

Perl 增量运算符

转载 作者:行者123 更新时间:2023-12-04 02:49:30 25 4
gpt4 key购买 nike

$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 的任何版本而改变

    关于Perl 增量运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43546839/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com