首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >perl逻辑和运算符

perl逻辑和运算符
EN

Stack Overflow用户
提问于 2014-07-28 13:44:58
回答 4查看 512关注 0票数 1

是否有一条语句执行简单的T/F或0/1逻辑连接操作,返回布尔型T/F或0或1的二进制或整数表示作为独占输出?

&&and操作符,而不是返回T/F (布尔值)或0/1 (二进制),而是返回作为第二个参数提供的任何值给操作符,假设两个参数都是"true“(例如,perl -e '$x=(3 && 2); print $x,"\n"'生成值为2;将语句更改为perl -e '$x=(3 & 4);打印$x,”n“生成值为4)。我试图找到一个操作符,它不需要用最后的参数除法,也不需要额外的if语句来严格地返回0或1。

我寻找这样一个操作符的原因是基于两个操作数的逻辑连接将计数器增加0或1,我更喜欢简洁的语句,例如$counter += ($x && $y),而不是替代方法(例如,if($x && $y) counter++$counter += ($x && $y)/$y)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-28 13:58:43

您可以通过双重否定强制布尔值。

代码语言:javascript
代码运行次数:0
运行
复制
$counter += !!($x && $y);
票数 4
EN

Stack Overflow用户

发布于 2014-07-28 21:48:23

添加一个布尔值到计数器(即使被限制为0或1)有一个坏的代码气味。在Perl中这样做的惯用方法是使用语句修饰符:

代码语言:javascript
代码运行次数:0
运行
复制
$counter++ if $x && $y;
票数 4
EN

Stack Overflow用户

发布于 2014-07-28 13:48:22

三元算子怎么样?

代码语言:javascript
代码运行次数:0
运行
复制
use warnings;
use strict;

my $val1 = 0;
my $val2 = 0; 
my $count = 0;

($val1 == 0 and $val2 == 0) ? $count++ : print "not equal\n";

print "$count\n";
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24996679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档