什么是MAX_INT的perl等价物?

Zak*_*Zak 14 arrays perl constants built-in

我是perl的新手并且寻求最低价值@array.是否有一些常量代表一个非常大的整数?

我知道我可以对数组进行排序并从头开始,但这似乎是浪费了很多CPU周期.在Perl中我的问题的优雅解决方案是什么?

ike*_*ami 24

为了回答你实际问过的问题(即使它对你没有用):

  1. 最大的整数值,可以存储为有符号整数.

    say ~0 >> 1;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 最大的整数值,可以存储为无符号整数.

    say ~0;
    
    Run Code Online (Sandbox Code Playgroud)
  3. 从0到此数字的所有整数值都可以作为浮点数存储而不会丢失.

    use Config qw( %Config );
    say eval($Config{nv_overflows_integers_at});
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,一些较大的整数可以存储而不会丢失浮点数,但不会高于此值1.


hob*_*bbs 18

在一般情况下,您可以undef用来表示不存在的值; perl标量不仅限于整数.那将写成:

my $min; # undef by default
for my $value (@array) {
  $min = $value if !defined $min or $value < $min;
}
Run Code Online (Sandbox Code Playgroud)

但这里有一些更简单的选择.例如,初始化$min为数组中的第一个值,然后与其余值进行比较:

my $min = $array[0];
for my $i (1 .. $#array) {
  $min = $array[$i] if $array[$i] < $min;
}
Run Code Online (Sandbox Code Playgroud)

或者只使用内置函数:

use List::Util 'min';
my $min = min @array;
Run Code Online (Sandbox Code Playgroud)