Se si dispone di una funzione C che restituisce un numero intero, si potrebbe scrivere una dichiarazione come questa:Esiste un ordine di valutazione definito per & = and | =?
MyInt &= MyFunc();
... dove stiamo utilizzando l'operatore bit a bit-assegnazione AND.
La domanda è: è garantito che MyFunc() sia eseguito, anche se MyInt è uguale a zero?
Probabilmente, se si utilizzava l'operatore di assegnazione OR bit a bit (| =), MyFunc() sarebbe sempre eseguito, anche se MyInt fosse impostato su tutti?
In altre parole: la valutazione lazy è consentita in C per gli operatori bit a bit?
Tranne che 'MyInt' viene valutato ** una volta ** (potrebbe importare quando si tratta di un'espressione con effetti collaterali.) –
La cosa sul LHS dell'assegnazione non verrà valutata. –
Neil: considera 'myMap [" test "] | = 10;' dove 'myMap.operator []' stampa qualcosa. Verrà stampato due volte nel secondo modulo, ma una volta nel modulo di assegnazione composto. –