【发布时间】:2011-10-03 16:59:28
【问题描述】:
这是一段常见的示例代码:
while (1) {
print "foo\n";
}
永远打印“foo”。
perl foo.pl
foo
foo
foo
...
和
while (0) { print "foo\n"; }
如你所料般安静地死去:
perl test.pl
有人能解释一下为什么这是一个有用的 while 实现吗?这至少适用于 5.10,Unix 和 MacOS X:
while (-1) { print "foo\n"; }
给了
foo
foo
foo
...
【问题讨论】:
-
-1在许多语言中被认为是一个真正的价值。 -
在 Perl 中,0 为假;任何不假的都是真的。
-
我很好奇是什么导致了这个问题。有没有一种语言认为 -1 为假?
-
停止对这类问题投反对票!这里的答案和解释可能对初学者仍然很有价值。
-
@Leonardo 公平地说,以目前的形式,这是一个糟糕的问题(对不起,OP!)。它从一个没有根据、不合理和无法解释的错误假设开始,并抛出几个误解而没有抓住重点。我同意一个相关的问题(“什么值被认为是
true,为什么?”)值得一问。我认为这里的反对票是因为这正是没有问的。