LINUX.ORG.RU

История изменений

Исправление mydibyje, (текущая версия) :

Схожая тема Объясните сишную магию v2

Для Ъ:

int fLastMoveToIndex = 5; // любое число
fLastMoveToIndex ^= ~fLastMoveToIndex >> (8 * >sizeof(fLastMoveToIndex) - 1);

Экспериментально удалось выяснить, что данный код меняет знак и отнимает 1 только если число положительное. Как он это делает - я даже знать не хочу.
Вопрос: что мешало написать банальный if, или хотя бы оставить комментарий? Типичное сишное какерство?
PS: производительно данного куска кода на погоду не влияет.

Вот с этим я не соглашусь. Я не уверен что компиляторы достаточно умные чтоб развернуть if в парочку дешевых логических операций, а не в условный переход.

Исходная версия mydibyje, :