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