PHP:en Perl y PHP
$a = 2;
$b = 3;
if($b=1 && $a=5)
{
$a++;
$b++;
}
echo $a.'-'.$b;
$a = 2;
$b = 3;
if($a=5 and $b=1)
{
$a++;
$b++;
}
echo $a.'-'.$b;
salida 6-16-2
.I no entienden el 1
aquí.
Perl:
$a = 2;
$b = 3;
if($b=1 && $a=5)
{
$a++;
$b++;
}
print $a.'-'.$b;
$a = 2;
$b = 3;
if($a=5 and $b=1)
{
$a++;
$b++;
}
print $a.'-'.$b;
salida 6-66-2
, no entiendo el segundo 6
aquí.
¿Alguien sabe el motivo?
En realidad sé que &&
tiene una precedencia mayor que and
, pero aún tengo la duda al saber esto antes de la mano.
ACTUALIZACIÓN
Ahora entiendo el PHP uno, ¿qué pasa con el Perl?
En Python, devuelve primero false-converted a false o lo último por exceso. Creo que Perl hará lo mismo – RiaD
@JeRog - una expresión '&&' dejará de evaluar cuando se encuentre un valor falso, entonces en '1 && 0 && 5',' 0' es el último valor. Del mismo modo, '1 && undef && 5' se evaluará a' undef'. – mob
@Je Rog '&&' devuelve su argumento izquierdo si su argumento de la izquierda es falso; de lo contrario, devuelve su argumento correcto. '||' devuelve su argumento izquierdo si su argumento izquierdo es verdadero; de lo contrario, devuelve su argumento correcto. Entonces, una cadena de '&&' devuelve el valor falso más a la izquierda (o el último valor si todos son verdaderos) y una cadena de '||' devuelve el valor verdadero más a la izquierda (o el último valor si todos son falsos). – hobbs