PHP:question de la priorité des opérateurs en Perl et 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;
sortie 6-16-2
.Je ne comprends pas le 1
ici.
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;
sortie 6-66-2
, je ne comprends pas ici la deuxième 6
.
Quelqu'un connaît la raison?
En fait, je sais que &&
a une priorité supérieure and
, mais je doute a encore quand on sait cela avant la main.
MISE À JOUR
Maintenant, je comprends le PHP un, à propos de ce que celui Perl?
En Python, il retourne d'abord faux-converti en faux ou en dernier overwise. Je pense que Perl fait la même chose – RiaD
@JeRog - une expression '&& 'arrête d'évaluer quand une valeur fausse est rencontrée, donc dans' 1 && 0 && 5', '0' est la dernière valeur. De même, '1 && undef && 5' évaluera' undef'. – mob
@Je Rog '&&' retourne son argument de gauche si son argument de gauche est faux; Sinon, il renvoie son bon argument. '||' retourne son argument de gauche si son argument de gauche est vrai, sinon il retourne son argument de droite. Donc une chaîne de '&&' retourne la valeur fausse la plus à gauche (ou la dernière valeur si tout était vrai) et une chaîne de '||' retourne la valeur vraie la plus à gauche (ou la dernière valeur si toutes étaient fausses). – hobbs