Für {A = a; B = b; }, wird "A = a" vor "B = b" ausgeführt?
AnnehmenA
, B
, a
, undb
sind alle Variablen und die Adressen vonA
, B
, a
, undb
sind alle unterschiedlich. Dann für den folgenden Code:
A = a;
B = b;
Erfordert der C- und C ++ - Standard explizitA=a
strikt ausgeführt werden, bevorB=b
? Da die Adressen vonA
, B
, a
, undb
sind alle unterschiedlich, dürfen Compiler die Ausführungssequenz von zwei Anweisungen für bestimmte Zwecke wie die Optimierung austauschen?
Wenn die Antwort auf meine Frage in C und C ++ unterschiedlich ist, würde ich gerne beides wissen.
Bearbeiten: Der Hintergrund der Frage ist der folgende. Beim Brettspiel-AI-Design wird zur Optimierung @ verwende lock-less shared-hash table, dessen Richtigkeit stark von der Ausführungsreihenfolge abhängt, wenn wir @ nicht hinzufügvolatile
Beschränkung