Ответ 1
C говорит, что:
(C11, 6.7.9p23) "Оценки выражений списка инициализации неопределенно секвенированы относительно друг друга, и, следовательно, порядок, в котором происходят какие-либо побочные эффекты, не определен".
и в C99
(C99, 6.7.8p23) "Порядок, в котором происходят какие-либо побочные эффекты среди выражений списка инициализации, не указан".
Это означает, что объявление
bool condition[10] = {true,condition[5]=true};
может иметь такое же поведение:
bool condition[10] = {true, 1};
или
bool condition[10] = {true, 1, [5] = true};
выполняется ли оценка condition[5] = true
до или после инициализации 0
элементов массива.
EDIT: есть случай неуказанного порядка инициализации элементов массива в отчете об ошибках # 208. Случай отличается, потому что в примере DR есть два инициализатора для одного элемента.
http://www.open-std.org/jtc1/sc22/wg14/www/docs/9899tc1/n32074.htm
int a [2] = {f (0), f (1), [0] = f (2)};
Цель WG14 заключалась в том, что вызов f (0) может, но не обязательно, выполняться, когда a инициализируется. Если вызов выполнен, порядок, в котором встречаются f (0) и f (2), не указан (как и порядок, в котором f (1) происходит относительно обоих). Независимо от того, сделан ли вызов, результат f (2) используется для инициализации [0].