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