- 1
- 2
- 3
- 4
- 5
- 6
- 7
int k = 50;
while (true){
i = i + i;
System.out.println(i);
k--;
if (k<0) break;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+68
int k = 50;
while (true){
i = i + i;
System.out.println(i);
k--;
if (k<0) break;
}
http://stackoverflow.com/questions/24173463/why-does-i-i-i-give-me-0
В цикле? for (int k=50;k>=0;--k){...}
Ну столкнулся человек первый раз с ограничениями целых чисел, ну что ж теперь. Все через это когда-то проходили.
так красивше хоть и с переполннением
Почему бы не написать это i+=i строчкой выше? Штуки в духе while (*dst++ = *src++); писали в далёкие сишкоблядские времена, когда оптимизаторы еще только зарождались...
> хоть и с переполннением
Ну ради них весь этот код и существует, все нормально.
Не сразу понял, что это не Java. Только после того, как мне запретили написать final int x = 1 / i;
Хотя, const int x = 1 / i; мне тоже запретили написать, наркоманы.
В нормальных языках дают. https://ideone.com/0sxzUE
Только там приходится этот x использовать, чтобы его не сомтимизировали (привет, Хаскель!)
Любой уважающий себя оптимизатор заменит a*=2 на a+=a или a<<=1, а на x86 даже изъебнется и перепишет умножения на 3, 5, 9 и т.п. через lea. Поэтому, имхо, надо писать наиболее подходящий по семантике вариант - если работаем с битами и логическими операциями - сдвиги, если увеличиваем что-то вдвое - умножение.
P.S. Тот же g++ даже b = a*i в циклах умудрялся заменять на b += a:
Просто его матрица and'ов и сеть однобитовых сумматоров жрут довольно много транзисторов, и для чего-то больше 32-64 бит строить такую схему не особо выгодно...
как то так. У меня возник страшный вопрос - а можно так же но без do?
всмысле do - это же императивщина, как переделать в чистую функциональшину?
Как-то так, наверное: https://ideone.com/UGC5jD
Ну в чистом коде ты вывод и не сделаешь. Так что только так, если хочется отделить чистую часть от I/O.
Кстати, в хаскеле есть прикол - часто удобней работать с бесконечными списками, а потом обрезать их, нежели работать сразу с конечными.
< шепелявит >Ты из какого года, милок? Из 2000, нябось?