Error[8]: Undefined offset: 5, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在尝试执行此代码.令我困惑的是为什么这个比较在错误时没有返回任何值.这是这些比较运算符的默认行为吗? my $output = (2 <= 1); print "value=$output"; 当逻辑检查失败时,比较运算符是否会返回undef? relational operators return 1 for true and a special version of the define 我正在尝试执行此代码.令我困惑的是为什么这个比较在错误时没有返回任何值.这是这些比较运算符的默认行为吗?

my $output = (2 <= 1); print "value=$output";

当逻辑检查失败时,比较运算符是否会返回undef?

解决方法 relational operators

return 1 for true and a special version of the defined empty string,“”,which counts as a zero but is exempt from warnings about improper numeric conversions,just as “0 but true” is.

你得到的价值实际上是一个双变量.它有单独的数字和字符串值(实际上不是空字符串的特殊版本).数值为0,字符串值为空字符串.你使用了字符串部分,它是空的,但0仍然存在.您可以使用Devel::Peek查看变量记录:

use Devel::Peek;my $result = ( 1 == 2 );Dump( $result );

在幕后的SV(标量值)事物中,您会看到PV中的字符串值和IV和NV中的数值(整数和数值):

SV = PVNV(0x7fe602802750) at 0x7fe603002e70  REFCNT = 1  FLAGS = (PADMY,IOK,NOK,POK,pIOK,pNOK,pPOK)  IV = 0  NV = 0  PV = 0x7fe6026016b0 ""
my $numeric = 0 + $result;   # 0
CUR = 0 LEN = 16

还有其他种类的双重武器. $!例如,错误变量有错误号和错误文本(我在Mastering Perl中谈到它).这通常不必担心,因为Perl为上下文做了正确的事情.

如果您总是想要一个数值,请在数字上下文中使用它:

use Scalar::Util qw(isdual);my $result = ( 1 == 2 );print isdual($result) ? "dualvar" : "Not dualvar";

您可以使用Scalar::Util的dualvar创建自己的双变量,并且可以检查标量是否是具有isdual的双变量.

[+++]

如果你想检查你得到的值是否被定义(你说它不是),你可以用defined来检查.但是,定义了一个空字符串.如果要检查它不是空字符串,可以使用length.当您拥有的值不可打印时,这些会有所帮助.

总结

以上是内存溢出为你收集整理的当数字比较为假时,Perl会返回什么?全部内容,希望文章能够帮你解决当数字比较为假时,Perl会返回什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
当数字比较为假时,Perl会返回什么?_语言综合_内存溢出

当数字比较为假时,Perl会返回什么?

当数字比较为假时,Perl会返回什么?,第1张

概述我正在尝试执行此代码.令我困惑的是为什么这个比较在错误时没有返回任何值.这是这些比较运算符的默认行为吗? my $output = (2 <= 1); print "value=$output"; 当逻辑检查失败时,比较运算符是否会返回undef? relational operators return 1 for true and a special version of the define 我正在尝试执行此代码.令我困惑的是为什么这个比较在错误时没有返回任何值.这是这些比较运算符的默认行为吗?

my $output = (2 <= 1); print "value=$output";

当逻辑检查失败时,比较运算符是否会返回undef?

解决方法 relational operators

return 1 for true and a special version of the defined empty string,“”,which counts as a zero but is exempt from warnings about improper numeric conversions,just as “0 but true” is.

你得到的价值实际上是一个双变量.它有单独的数字和字符串值(实际上不是空字符串的特殊版本).数值为0,字符串值为空字符串.你使用了字符串部分,它是空的,但0仍然存在.您可以使用Devel::Peek查看变量记录:

use Devel::Peek;my $result = ( 1 == 2 );Dump( $result );

在幕后的SV(标量值)事物中,您会看到PV中的字符串值和IV和NV中的数值(整数和数值):

SV = PVNV(0x7fe602802750) at 0x7fe603002e70  REFCNT = 1  FLAGS = (PADMY,IOK,NOK,POK,pIOK,pNOK,pPOK)  IV = 0  NV = 0  PV = 0x7fe6026016b0 ""
my $numeric = 0 + $result;   # 0
CUR = 0 LEN = 16

还有其他种类的双重武器. $!例如,错误变量有错误号和错误文本(我在Mastering Perl中谈到它).这通常不必担心,因为Perl为上下文做了正确的事情.

如果您总是想要一个数值,请在数字上下文中使用它:

use Scalar::Util qw(isdual);my $result = ( 1 == 2 );print isdual($result) ? "dualvar" : "Not dualvar";

您可以使用Scalar::Util的dualvar创建自己的双变量,并且可以检查标量是否是具有isdual的双变量.

如果你想检查你得到的值是否被定义(你说它不是),你可以用defined来检查.但是,定义了一个空字符串.如果要检查它不是空字符串,可以使用length.当您拥有的值不可打印时,这些会有所帮助.

总结

以上是内存溢出为你收集整理的当数字比较为假时,Perl会返回什么?全部内容,希望文章能够帮你解决当数字比较为假时,Perl会返回什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1267275.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存