Si vous avez une fonction C qui retourne un entier, vous pourriez écrire une déclaration comme ceci:Existe-t-il un ordre d'évaluation défini pour & = et | =?
MyInt &= MyFunc();
... où nous utilisons l'opérateur logique binaire mission.
La question est: MyFunc() est-il garanti d'être exécuté, même si MyInt est égal à zéro? Par ailleurs, si nous utilisions l'opérateur d'affectation OR au niveau du bit (| =), MyFunc() serait-il toujours exécuté, même si MyInt était défini sur tous les uns? En d'autres termes, l'évaluation paresseuse est-elle permise en C pour les opérateurs au niveau du bit?
Sauf que 'MyInt' est évalué ** une fois ** (peut être important quand c'est une expression avec des effets secondaires.) –
La chose sur le LHS de l'affectation ne sera pas évaluée. –
Neil: considère myMap ["test"] | = 10; 'where' myMap.operator [] 'imprime quelque chose. Il sera imprimé deux fois dans la deuxième forme mais une fois dans le formulaire d'assignation composé. –