LINUX.ORG.RU

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

Исправление I-Love-Microsoft, (текущая версия) :

Вот «просто насыпьте скобок побольше», чтобы убрать UB. Слабо?

Запросто:

int p = 20, n = 12;
n = n * ((p - 1) << (1 + (p - 1) / 10));
p++;
Получается n == 912 как у шланга, так и у GCC, да и калькулятор такой же результат дает. И никаких UB, ибо нефиг плодить трэш. Чтобы понтануться перед одноклассниками? Или поразить работодателя как ловко кандидат ходить по лезвию ножа неопределенности? :)

>>> p = 20
>>> n = 12
>>> n = n * ((p - 1) << (1 + int((p - 1) / 10)))
>>> n
912

Даже пихтон скушает нормально обскобоченный код :)

Исправление I-Love-Microsoft, :

Вот «просто насыпьте скобок побольше», чтобы убрать UB. Слабо?

Запросто:

int p = 20, n = 12;
n = n * ((p - 1) << (1 + (p - 1) / 10));
p++;
Получается n == 912 как у шланга, так и у GCC, да и калькулятор такой же результат дает. И никаких UB, ибо нефиг плодить трэш. Чтобы понтануться перед одноклассниками? Или поразить работодателя как ловко кандидат ходить по лезвию ножа неопределенности? :)

>>> p = 20
>>> n = 12
>>> n = n * ((p - 1) << (1 + int((p - 1) / 10)))
>>> n
912

Исходная версия I-Love-Microsoft, :

Вот «просто насыпьте скобок побольше», чтобы убрать UB. Слабо?

Запросто:

int p = 20, n = 12;
n = n * ((p - 1) << (1 + (p - 1) / 10));
p++;
Получается n == 912 как у шланга, так и у GCC, да и калькулятор такой же результат дает. И никаких UB, ибо нефиг плодить трэш. Чтобы понтануться перед одноклассниками? Или поразить работодателя как ловко кандидат ходить по лезвию ножа неопределенности? :)