d'abord ajouter des espaces pour faire cette expression de déclaration plus facile à analyser visuellement:
a += b >= 300 ? b = 100 : a == 100;
parse Ensuite, selon la grammaire C (ce qui est légèrement différent de la java ou javascript grammaires dans ce cas particulier):
a +=
(b >= 300) ?
b = 100 :
a == 100
;
Depuis b = 200
, le test b >= 300
est évaluée à false et la première branche de l'opérateur ternaire est pas évalué, mais le second Branc h est et a == 100
évalue à 1
comme a
est en effet égal à 100
. Le résultat de l'opérateur ternaire, 1
, est ajouté à a
, d'où la nouvelle valeur pour a
est 101
. b
est inchangé.
Est-ce ce devoir? Juste curieux. –
Il peut s'agir de devoirs, mais la question ne porte pas sur le résultat, mais un appel à l'explication. – chqrlie