gpt4 book ai didi

perl - 为什么 Perl 认为 -1 是真的?

转载 作者:行者123 更新时间:2023-12-03 23:59:13 27 4
gpt4 key购买 nike

这是一段常见的示例代码:

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
...

最佳答案

如果有的话,可以说 -11 更有可能为真自 -1 ( 111..111b ) 是零 ( 000..000b ) 的按位求反。 BASIC 和 GW-BASIC 在需要返回真值时使用 -1。

无论如何,Perl 认为表示“空”或“无”的值是错误的。大多数语言都持有类似的观点。具体来说,整数零、浮点零、字符串零、空字符串和 undef 都是假的。

这是 documented ,尽管文档措辞不佳。 (它列出了 () 作为一个错误的值,但没有这样的值。)

除了一致性之外,采用这种方法非常有用。例如,它允许一个人使用

if (@x)

而不是
if (@x != 0)

关于perl - 为什么 Perl 认为 -1 是真的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7638195/

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