Ответ 1
Вы можете использовать эту короткую и видную строку (Demo):
corner = (corner + 1) % 4;
Или, даже немного короче (Demo):
corner = ++corner % 4;
При кодировании я нахожу себя делая следующее очень часто:
corner++;
if(corner == 4) corner = 0;
В любом случае это делается в одной строке?
В этом примере угол должен быть 0, 1, 2, 3, 0, 1, 2, 3, 0....
Вы можете использовать эту короткую и видную строку (Demo):
corner = (corner + 1) % 4;
Или, даже немного короче (Demo):
corner = ++corner % 4;
Используйте остаток. Это две строки, но чистые.
corner++;
corner %= 4;
Вы можете сделать это:
corner = ++corner == 4 ? 0 : corner;
Это даст вам возможность назначить что-то еще для переменной corner
в случае, если ваш тест corner == 4
не прошел.
Я использую:
if (++corner == 4) corner = 0;
Это не так очевидно, но намного быстрее, поскольку деление обычно выполняется медленнее, чем любая побитовая операция.
corner = ++corner & 3;
EDIT: И удивительно, что я обнаружил еще один удивительный способ сделать велосипед - используя смены, и он работает еще быстрее!
corner = ++corner << 30 >>> 30;
И этот трюк работает только при любой мощности 2.
Этот тест показывает все результаты (хотя это javascript, а не java)