Допустимое использование условного оператора?

Рассмотрим следующий фрагмент кода:

int i, k, m;
k = 12;
m = 34;
for (i = 0; i < 2; i++) ((i & 1) ? k : m) = 99 - i;
printf("k: %ld   m: %ld\n\n", k, m);

В этом глупом примере выражение условного оператора является сокращением для:

if (i & 1) k = 99 - i; else m = 99 - i;

Мой компилятор не жалуется и выполняет этот фрагмент кода дает ожидаемый результат

k: 98   m: 99

Мой вопрос, однако, является ли этот код допустимым в соответствии со стандартом C? Я никогда не видел ничего подобного, что использовалось раньше.

5
задан Luchian Grigore 5 April 2012 в 15:21
поделиться