我使用的是Perl脚本。
我想使用32字节有符号整数形式,如c语言。
例如,如果我将1加到整数值,我想输出它,如下所示。
my $val = 0;
while(1){
print $val++;
}
-------------------------------
The desired result.
0
1
2
.
.
.
2,147,483,646
2,147,483,647
-2,147,483,648
-2,147,483,647
-2,147,483,647
.
.
.
但我不知道如何使用4byte有符号整数值。
答案 0 :(得分:2)
你不能告诉Perl你想要使用的整数大小。 [1]
但这似乎并不是你想要的。您似乎想要一个从2,147,483,647
到-2,147,483,648
包裹的计数器。
你必须像在C中那样做:
int32_t i = 0;
...
/* Can't use use ++i because incrementing 2147483647 is undefined behaviour */
i = i == 2147483647 ? -2147483648 : i+1;
或
int32_t i = 0;
...
/* Can't use use ++i because incrementing 2147483647 is undefined behaviour */
i = (int32_t)((((int64_t)i)+1) & 0xFFFFFFFF);
Perl使用三种数字存储类型:
ivsize
uvsize
nvsize
您可以按如下方式获取每种类型的大小(以字节为单位):
perl -le'use Config qw( %Config ); print $Config{ivsize};'
perl -le'use Config qw( %Config ); print $Config{uvsize};'
perl -le'use Config qw( %Config ); print $Config{nvsize};'
或
perl -V:ivsize
perl -V:uvsize
perl -V:nvsize
编译perl
时,不仅固定了这些类型的大小,而且您无法选择perl
中哪些类型用于存储值。此外,当发生溢出时,perl
将自动从一种类型转换为另一种类型。 (Example)
答案 1 :(得分:1)