recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - La valeur de l'expression arithmétique ternaire 3<8?(9<6?7:5):2>0?4:1 est différente en Java et en PHP. Pourquoi?


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 )

三叔三叔2816 Il y a quelques jours1094

répondre à tous(6)je répondrai

  • typecho

    typecho2017-06-08 11:04:07

    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:1php 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

    répondre
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-08 11:04:07

    L'ordre de combinaison des opérations ternaires de PHP est inversé
    http://www.jianshu.com/p/124f...

    répondre
    0
  • 代言

    代言2017-06-08 11:04:07

    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

    .

    répondre
    0
  • 某草草

    某草草2017-06-08 11:04:07

    En PHP, cela ressemble à ceci :

    $a = (3 < 8 ? (9 < 6 ? 7 : 5): 2 > 0)
        ? 4
        : 1;

    Il est donc 4 heures ;

    En JavaScript, cela ressemble à ceci :

    var a = (3 < 8)
        ? (9 < 6 ? 7 : 5)
        : (2 > 0 ? 4 : 1);

    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. ^_^

    répondre
    0
  • 怪我咯

    怪我咯2017-06-08 11:04:07

    Bonne réponse à l'étage~~~~~~

    répondre
    0
  • 欧阳克

    欧阳克2017-06-08 11:04:07

    Ne devrais-je pas taper cette photo ?

    répondre
    0
  • Annulerrépondre