递增运算符如何在循环中工作

时间:2014-05-24 17:26:54

标签: perl

我刚开始使用perl,在尝试一些复合语句时,我写了这个:

my $ct;
while ($ct++ < 10) {
    print $ct;
}

打印出来:

12345678910

我没想到它会打印10.循环的逻辑如何真正起作用?

根据perdoc,TERM运算符具有最高优先级。迭代循环后,$ ct增加到10.当它变为10时,while循环应该退出。那为什么10还要打印出来?

2 个答案:

答案 0 :(得分:1)

想想它

while ($ct < 10) {
    $ct += 1;
    print $ct;
}

(比较后增加)

另一方面,变量左侧的++将先增加,然后进行比较,

while (++$ct < 10) {
    print $ct;
}

对于C背景的人来说,这非常直观;来自perldoc

  

&#34; ++&#34;和&#34; - &#34;在C中工作。也就是说,如果放在变量之前,它们在返回值之前将变量递增或递减1,如果在返回值之后放置,递增或递减。

答案 1 :(得分:0)

因为您正在使用后缀运算符。它的第一个比较然后递增。