% perl -e '$i = 9; $p = \$i++; $q = \++$i; $i = "WTF"; print "$$p $$q\n"'
9 WTF我期望两者的工作方式和打印9 11相同,因为在perl中,前增量和后增量都不能用作左值。
这是在什么地方描述的吗,有什么理由吗,或者只是一个小故障?我所能找到的就是增量运算符在应用于非数字字符串时的神奇属性,这似乎完全无关。
请注意,这也适用于减量运算符,这不是运算符优先级的问题(添加括号或将其写为($p, $q) = \($i++, ++$i)不会改变任何事情),在Perl5.6等旧版本中也是如此。
我不是在问变通方法(我知道在\和++之间放置一个int,或者添加一个零,等等)。
发布于 2021-10-05 19:24:02
后递减返回$i的旧值,因此它必须返回一个新的标量并这样做。
预减返回$i的新值,因此它只返回$i。免费构建一个新的标量是没有意义的。
https://stackoverflow.com/questions/69455974
复制相似问题