我刚开始使用perl,在尝试一些复合语句时,我写了这个:
my $ct;
while ($ct++ < 10) {
print $ct;
}
打印出来:
12345678910
我没想到它会打印10.循环的逻辑如何真正起作用?
根据perdoc,TERM运算符具有最高优先级。迭代循环后,$ ct增加到10.当它变为10时,while循环应该退出。那为什么10还要打印出来?
答案 0 :(得分:1)
想想它
while ($ct < 10) {
$ct += 1;
print $ct;
}
(比较后增加)
另一方面,变量左侧的++
将先增加,然后进行比较,
while (++$ct < 10) {
print $ct;
}
对于C
背景的人来说,这非常直观;来自perldoc:
&#34; ++&#34;和&#34; - &#34;在C中工作。也就是说,如果放在变量之前,它们在返回值之前将变量递增或递减1,如果在返回值之后放置,递增或递减。
答案 1 :(得分:0)
因为您正在使用后缀运算符。它的第一个比较然后递增。