次のコードについて考えてみます。
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標準に準拠した有効なコードであるかどうかです。私はそれが以前に使用されたようなものを見たことがありません。