- 1
case UP : o > 0 ? o-- : o = FIELD_SIZE - 1; break;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+911
case UP : o > 0 ? o-- : o = FIELD_SIZE - 1; break;
Друг скинул в аську, попросил перевести в if-ную форму)))
Не знаю где он это откопал)))
Друг привод в нормальный вид код из примеров Матлаба))
Хотя хрен знает кто у них там работает)))
Я подумал что этот код эквивалентен:
// case UP : (o > 0 ? o-- : o) = FIELD_SIZE - 1; break;
case UP:
if (o > 0) o--;
o = FIELD_SIZE - 1;
break;
Был не прав.
Значит у тернарного оператора наименьший приоритет . . .
if(o > 0)
o--;
else
o = FIELD_SIZE - 1;
break;
ну либо
o = o > 0 ?o - 1 : FIELD_SIZE - 1;
case UP:
if (o > 0) o--;
else o = FIELD_SIZE - 1;
break;
но орфомление понравилось, как будто полоса смайлов
а лучше как-то так:
Не вижу говна.
Вполне читаемый, нормально работающий и вполне оптимальный код...
Знаю, что многие за этот пост начнут минусовать. Но прошу рядом с каждым минусом давать аргументированный ответ.
1.c:
2.c:
ч.т.д.
А во-вторых, что произошло с "set"? Может вы забыли указить "volatile" и у вас тупо код соптимизировался в обоих случаях до программы-пустышки?
И какая у вас версия "gcc", что он воспринял строку "o > 0 ? o-- : o = FIELD_SIZE - 1;"? У меня лично, данная строка воспринимается только в "g++".
error: invalid lvalue in assignment
(3.4.5 и 4.4.3)
o > 0 ? o-- : (o = FIELD_SIZE - 1);
но в этом контексте все равно if и тернарный ведут себя одинаково