Комментарии 23
Понимаете, любая функция должна быть хорошей. Нет, наверное, в качестве задачи для разминки мозгов «сделай XXXXX так, чтобы поместилось в одну строку» это подойдет. Вы рассматриваете их именно с этой точки зрения, правда?
0
>> Ранее я уже публиковал статью о Однострочниках на С++.
И, насколько я помню, с треском провалились?
И, насколько я помню, с треском провалились?
+4
Почему команду «xchg op1, op2» в ассемблерной вставке не используете?
0
Потому что один из операндов должен быть регистром.
+1
Полагаю, потому что xchg не имеет формы для обмена двух переменных в памяти.
0
Да можно и так…
void swap(int *a, int *b) {
asm volatile(
"XCHG %0, %1; \n\t"
:"=a"(*a),"=b"(*b)
:"a"(*a),"b"(*b)
);
}
+2
И не забывайте, что если в аргументах XCHG есть память, то инструкция будет иметь префикс LOCK, что не значительно влияет на скорость исполнения.
0
Спасибо, Кэп)
0
Мне кажется, или данная реализация кода Грея для чисел вида 11...11 вернет 10...00?
11...11 ^ (01...11) = 10...00
11...11 ^ (01...11) = 10...00
0
НЛО прилетело и опубликовало эту надпись здесь
«индийский алгоритм»
return b? ((b&1?a:1)*powM(a*a, b/2, p) % p): 1;
Человек, который найдет это в какой-нить опенсурсной библиотеке, в которой нужно будет разобраться, прокленет ее автора.
Макконнелла не читали?
return b? ((b&1?a:1)*powM(a*a, b/2, p) % p): 1;
Человек, который найдет это в какой-нить опенсурсной библиотеке, в которой нужно будет разобраться, прокленет ее автора.
Макконнелла не читали?
-2
Почему? Алгоритм довольно простой и известный: если степень нечётная, умножь на основание предыдущую степень, а если чётная, возведи в квадрат вдвое меньшую степень. В одной строке разобраться не слишком сложно.
0
Это же не реальный рабочий код — это «разминка для мозгов». Естественно, никто не станет так делать. Я надеюсь, во всяком случае.
0
При всём уважении к труду… я не совсем понимаю, зачем нужны «однострочники» на C++.
Одно дело какой-нибудь powershell, где нужно в командной строке набрать строчку и получить результат.
И совсем другое дело — компилируемый язык, где разницы между одной строчкой и десятью строчками нет.
У меня все программы состоят из однострочников примерно такого вида:
class X {
public: void f();
void g(int x);
int h(double a, double b);
};
А что находится в cpp-модуле — какая кому разница?
Одно дело какой-нибудь powershell, где нужно в командной строке набрать строчку и получить результат.
И совсем другое дело — компилируемый язык, где разницы между одной строчкой и десятью строчками нет.
У меня все программы состоят из однострочников примерно такого вида:
class X {
public: void f();
void g(int x);
int h(double a, double b);
};
А что находится в cpp-модуле — какая кому разница?
0
> Сравнение 5 вариантов кода с undefined bahavior.
Fixed.
Fixed.
+3
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Однострочники на Си/С++. Часть 2