Le résultat de l'évaluation en Java et en js est de 5, mais en PHP il est de 4
Est-ce parce que ma formule n'est pas écrite de manière standardisée ? Ou est-ce pour d'autres raisons ? J'ai demandé à d'autres de l'essayer en utilisant le langage .net et c, les deux sont 5
[Résolu] Merci pour vos réponses. Je suppose que la formule n'est pas écrite de manière standardisée, car je l'ai toujours. Je pense que le ternaire va de droite à gauche, j'ai donc omis la dernière parenthèse (je l'ai souvent écrit de cette façon auparavant, je vais le corriger par souci de standardisation, il devrait être 3<8 ?(9<6 ?). 7:5):(2>0?4:1 )
Le problème avec la direction de combinaison de l'opérateur ternaire :
java de droite à gauche. Équivalent à
3<8?(9<6?7:5):(2>0?4:1)
3<8?(9<6?7:5):(2>0?4:1)
php 从做向右。等效于
(3<8?(9<6?7:5):2)>0?4:1
php de faire à droite. Équivalent à(3<8?(9<6?7:5):2)>0?4:1
Par conséquent, afin d'éviter la génération de code ambigu, il vaut mieux ne pas omettre les parenthèses qui doivent être écrites
L'ordre de combinaison des opérations ternaires de PHP est inversé
http://www.jianshu.com/p/124f...
Je suppose que l'interprétation de la priorité par PHP est différente de celle de Java, js et d'autres langages. Elle peut être interprétée comme
.(3 < 8 ? (9 < 6 ? 7 : 5) : 2 > 0) ? 4 : 1
En PHP, cela ressemble à ceci :
Il est donc 4 heures ;
En JavaScript, cela ressemble à ceci :
Il est donc 5 heures.
Donc si vous ne connaissez pas la préséance de l’opérateur, complétez simplement les parenthèses. ^_^
Bonne réponse à l'étage~~~~~~
Ne devrais-je pas taper cette photo ?