Rozważmy następujący fragment kodu:Prawidłowe korzystanie z operatora warunkowego?
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);
W tej głupiej przykład Wyrażenie warunkowe operator jest skrótem dla:
if (i & 1) k = 99 - i; else m = 99 - i;
Mój kompilator nie narzekać i wykonując ten kawałek kodu daje Oczekiwana moc wyjściowa:
k: 98 m: 99
Moje pytanie brzmi jednak, czy jest to ważny kod zgodny ze standardem C? Nigdy wcześniej nie widziałem czegoś podobnego.
Jeśli kompiluje i wykonuje zgodnie z oczekiwaniami, to jest to najprawdopodobniej ważne. Jednak powinieneś zadać sobie pytanie, czy chcesz zachować taki kod, zwłaszcza jeśli nie jest on dotykany przez kilka lat i musisz zastanowić się, co robi, gdy wrócisz 5 lat w dół. –