📜  珀尔 |自动字符串到数字的转换或强制转换

📅  最后修改于: 2022-05-13 01:54:43.025000             🧑  作者: Mango

珀尔 |自动字符串到数字的转换或强制转换

Perl 有一种不同的方式来处理运算符,因为这里的运算符定义了操作数的行为方式,但在其他编程语言中,操作数定义了运算符的行为方式。强制转换是指将特定变量的数据类型转换为另一种数据类型。例如,如果有一个字符串“1234”,并且在将其转换为 int 数据类型后,输出将是一个整数 1234。在 Perl 中将字符串转换为整数有很多方法。一种是使用Typecasting ,另一种是使用' sprintf '函数。有时人们在 Perl 中不使用强制转换这个词,因为整个转换是自动的。

类型转换

当我们将一种数据类型的值分配给另一种数据类型时,就会发生类型转换。如果数据类型兼容,那么 Perl 会进行自动类型转换。如果不兼容,则需要显式转换它们,这称为显式类型转换。有两种类型的类型转换:

  • 隐式类型转换:隐式类型转换由编译器本身完成。用户无需提及使用任何方法的特定类型转换。如果需要,编译器自己确定变量的数据类型并修复它。在 Perl 中,当我们声明一个新变量并为其赋值时,它会自动将其转换为所需的数据类型。

    示例 1:

    # Perl code to demonstrate implicit 
    # type casting
      
    # variable x is of int type
    $x = 57;
      
    # variable y is of int type
    $y = 13;
      
    # z is an integer data type which
    # will contain the sum of x and y
    # implicit or automatic conversion
    $z = $x + $y;
      
    print "z is ${z}\n";
      
    # type conversion of x and y integer to 
    # string due to concatenate function
    $w = $x.$y;
      
    # w is a string which has the value: 
    # concatenation of string x and string y
    print "w is ${w}\n";
    

    输出:

    z is 70
    w is 5713
    
  • 显式类型转换:在这种转换中,用户可以根据需要将变量转换为特定的数据类型。如果程序员希望特定变量具有特定数据类型,则需要显式类型转换。保持代码一致很重要,这样不会有变量因类型转换而导致错误。

    示例:以下执行显式类型转换,其中将字符串(或任何数据类型)转换为指定类型(例如 int)。

    # Perl code to demonstrate Explicit 
    # type casting
      
    # String type
    $string1 = "27";
      
    # conversion of string to int 
    # using typecasting int()
    $num1 = int($string1);
      
    $string2 = "13";
      
    # conversion of string to int
    # using typecasting int()
    $num2 = int($string2);
      
    print "Numbers are $num1 and $num2\n";
      
    # applying arithmetic operators 
    # on int variables 
    $sum = $num1 + $num2;
      
    print"Sum of the numbers = $sum\n";
    

    输出:

    Numbers are 27 and 13
    Sum of the numbers = 40
    

sprintf函数

这个 sprintf函数返回一个标量值,一个格式化的文本字符串,它根据代码进行类型转换。命令 sprintf 是一个格式化程序,根本不打印任何内容。

# Perl code to demonstrate the use 
# of sprintf function
  
# string type
$string1 = "25";
  
# using sprintf to convert 
# the string to integer
$num1 = sprintf("%d", $string1);
  
$string2 = "13";
  
# using sprintf to convert 
# the string to integer
$num2 = sprintf("%d", $string2);
  
# applying arithmetic operators
# on int variables 
print "Numbers are $num1 and $num2\n";
  
$sum = $num1 + $num2;
print"Sum of the numbers = $sum\n";

输出:

Numbers are 25 and 13
Sum of the numbers = 38