次のコードを検討:この愚かな例で条件演算子の有効な使用ですか?
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年後に戻ったときに何をするのか困惑させなければならないか、自分自身に尋ねるべきです。 –