谁能解释一下Perl程序的行为

尼克希尔·梅塔
$a="";
$b="n";
$c = !$a;
$d = !$b;
print $c , "\n" , $d;
if($d == 0){
    print "zero";
}

我写了这个perl程序,我希望输出如下

1  
0Zero

但它打印

1  
zero

谁能解释我为什么会这样?

用户名

Perl中的变量根据上下文被视为数字或字符串。如果在分配时未将某些内容视为数字,则Perl在打印时会将其视为字符串。

因此,Perl中的假值与具有更强类型的语言(由我加重)相比有点不同

在布尔上下文中,数字0,字符串'0'和“”,空列表()和undef均为false。所有其他值都是正确的。否定真值!或不返回特殊的false值。当以字符串形式求值时,将其视为“”,而将其视为数字,则将其视为0。大多数返回true或false的Perl运算符都将以这种方式运行。

所以,这里的问题是,!是一个逻辑运算符,而不是一个算术之一。因此,它返回逻辑上错误的值,根据上下文以不同的方式表示该值。

如果要确保将某些内容视为数字,则可以选择几种方法。您可以执行算术运算,这会使Perl将结果视为数字:

$d=!$b+0;
print $d;

您可以使用sprintfprintf显式控制显示:

printf '%d', $d;

或者您可以使用int

print int $d;

(注意:这一切看起来似乎有些复杂。但是它的设计目的是使该语言能够满足您的需要,而您不必去考虑它。通常它会这样做。在某些情况下,您偶尔会遇到这种情况。需要执行Perl的默认行为以外的其他操作。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

谁能解释一下CGRectZero的用途

来自分类Dev

谁能解释一下公式

来自分类Dev

为什么下面的程序输出是 5,而不是 4?谁能解释一下?

来自分类Dev

谁能解释一下另一个函数中函数的这种行为?

来自分类Dev

谁能解释一下shutil.rmtree和shutil.copytree的这种怪异行为?

来自分类Dev

谁能解释一下在以下情况下如何分配大小?

来自分类Dev

谁能解释一下jquery中函数的执行过程

来自分类Dev

谁能解释一下导致CPU过热的原因

来自分类Dev

谁能解释一下这部分代码吗?

来自分类Dev

谁能解释一下什么是Django modelform_factory和modelformset_factory?

来自分类Dev

谁能解释一下上面的代码如何工作以及使用哪个概念?

来自分类Dev

我是 android Java 的初学者。谁能解释一下代码

来自分类Dev

谁能解释一下 ptr+1 和 ptr[0]+1 之间的区别

来自分类Dev

谁能解释一下这段代码的第 3 行吗?

来自分类Dev

谁能解释一下这部分代码“((MainActivity)getActivity()).someMethod()”的含义?

来自分类Dev

谁能解释一下“if”语句是如何在这里执行的

来自分类Dev

MSMQ 如何与 Hangfire 配合使用。谁能解释一下流程?

来自分类Dev

请谁能解释一下这个递归代码?

来自分类Dev

谁能解释一下这段代码?为什么显示 1

来自分类Dev

令人困惑的 CSS - 谁能解释一下

来自分类Dev

您能解释一下TextView + Gravity + SingleLine和Canvas的行为吗?

来自分类Dev

您能解释一下这种怪异的函数声明行为吗?

来自分类Dev

您能解释一下这种怪异的函数声明行为吗?

来自分类Dev

您能解释一下Ceiling方法的行为吗?

来自分类Dev

谁能解释一下这段代码如何创建一个实现接口并实例化该类的类?

来自分类Dev

谁能解释一下黑客等级二叉树节点的解决方案?

来自分类Dev

谁能解释一下C#中Windows窗体的大小调整是如何工作的

来自分类Dev

Ext4 外置硬盘似乎比平时快 10 倍,谁能解释一下

来自分类Dev

谁能解释一下字符串和数字比较在javascript中是如何工作的?

Related 相关文章

  1. 1

    谁能解释一下CGRectZero的用途

  2. 2

    谁能解释一下公式

  3. 3

    为什么下面的程序输出是 5,而不是 4?谁能解释一下?

  4. 4

    谁能解释一下另一个函数中函数的这种行为?

  5. 5

    谁能解释一下shutil.rmtree和shutil.copytree的这种怪异行为?

  6. 6

    谁能解释一下在以下情况下如何分配大小?

  7. 7

    谁能解释一下jquery中函数的执行过程

  8. 8

    谁能解释一下导致CPU过热的原因

  9. 9

    谁能解释一下这部分代码吗?

  10. 10

    谁能解释一下什么是Django modelform_factory和modelformset_factory?

  11. 11

    谁能解释一下上面的代码如何工作以及使用哪个概念?

  12. 12

    我是 android Java 的初学者。谁能解释一下代码

  13. 13

    谁能解释一下 ptr+1 和 ptr[0]+1 之间的区别

  14. 14

    谁能解释一下这段代码的第 3 行吗?

  15. 15

    谁能解释一下这部分代码“((MainActivity)getActivity()).someMethod()”的含义?

  16. 16

    谁能解释一下“if”语句是如何在这里执行的

  17. 17

    MSMQ 如何与 Hangfire 配合使用。谁能解释一下流程?

  18. 18

    请谁能解释一下这个递归代码?

  19. 19

    谁能解释一下这段代码?为什么显示 1

  20. 20

    令人困惑的 CSS - 谁能解释一下

  21. 21

    您能解释一下TextView + Gravity + SingleLine和Canvas的行为吗?

  22. 22

    您能解释一下这种怪异的函数声明行为吗?

  23. 23

    您能解释一下这种怪异的函数声明行为吗?

  24. 24

    您能解释一下Ceiling方法的行为吗?

  25. 25

    谁能解释一下这段代码如何创建一个实现接口并实例化该类的类?

  26. 26

    谁能解释一下黑客等级二叉树节点的解决方案?

  27. 27

    谁能解释一下C#中Windows窗体的大小调整是如何工作的

  28. 28

    Ext4 外置硬盘似乎比平时快 10 倍,谁能解释一下

  29. 29

    谁能解释一下字符串和数字比较在javascript中是如何工作的?

热门标签

归档