对我不好意思。
相关但不同的问题: What does “0 but true” mean in Perl?
答案 0 :(得分:8)
Perl不区分各种数字。看看所有那些非CS /程序员的眼睛,它们对我来说也意味着同样的事情:零。 (这是Perl的基础之一:它试图像人一样工作,而不是像计算机一样。“如果它看起来像鸭子......”)
所以,如果你把它们当作数字使用,它们都是一样的。如果您将它们用作字符串,它们会有所不同。这确实导致您可能需要强制执行一种解释(“0但是为真”;另请参阅"nancy typing")。但总的来说,它“自动做对了”。
答案 1 :(得分:3)
我不明白,他们还有什么意思?
给出零的整数,科学,浮点,有符号整数和八进制表示法。他们为什么要有所不同?
答案 2 :(得分:3)
0==0
,包括拉里·沃尔在内的所有人都知道。
答案 3 :(得分:2)
Perl将每个标量值解释为字符串和(可能)数字。根据perl的转换规则,所有这些零字符串表示都可以转换为整数值0:
“0”,“0.0”,“ - 0”,“+ 0”,“000”=>最简单的直线到数字转换的情况。 “0e0”=>在数字上下文中,仅转换前导有效数字字符,因此仅使用前导“0”。例如,“1984abcdef2112”将在数字上解释为1984年。
perl中的“0但是true”表示像“0e0”这样的字符串将在数字上评估为0,但在布尔上下文中将为“true”,因为转换为布尔值遵循的规则与严格的数字转换不同。
答案 4 :(得分:1)
Perl适用于上下文。在字符串上下文中,它们都是不同的。在数字上下文中,它们都是零。
print "same string\n" if '0' eq '0.0';
print "same number\n" if 0 == 0.0;
布尔上下文中的'0但是'是真的:
print "boolean context\n" if '0 but true';
print "string context\n" if '0 but true' eq '0';
print "numeric context\n" if '0 but true' == 0;