Для {A = a; B = B; } будет ли строго выполняться «A = a» перед «B = b»?
предполагатьA
, B
, a
, а такжеb
все переменные, и адресаA
, B
, a
, а такжеb
все разные. Затем для следующего кода:
A = a;
B = b;
Требуется ли стандарт C и C ++ явноA=a
быть строго исполненным доB=b
? Учитывая, что адресаA
, B
, a
, а такжеb
все ли разные, разрешено ли компиляторам менять последовательность выполнения двух операторов для какой-либо цели, например, для оптимизации?
Если ответ на мой вопрос отличается в C и C ++, я хотел бы знать оба.
Изменить: фон вопроса является следующим. В дизайне AI настольной игры, для оптимизации люди используюттаблица с общим хэшем без блокировки, чья корректность сильно зависит от порядка выполнения, если мы не добавимvolatile
ограничение.