История изменений
Исправление mydibyje, (текущая версия) :
Схожая тема Объясните сишную магию v2
Для Ъ:
int fLastMoveToIndex = 5; // любое число fLastMoveToIndex ^= ~fLastMoveToIndex >> (8 * >sizeof(fLastMoveToIndex) - 1);
Экспериментально удалось выяснить, что данный код меняет знак и отнимает 1 только если число положительное. Как он это делает - я даже знать не хочу.
Вопрос: что мешало написать банальный if, или хотя бы оставить комментарий? Типичное сишное какерство?
PS: производительно данного куска кода на погоду не влияет.Вот с этим я не соглашусь. Я не уверен что компиляторы достаточно умные чтоб развернуть if в парочку дешевых логических операций, а не в условный переход.
Исходная версия mydibyje, :