Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
function swap(&$a, &$b) {
$a ^= ($b ^= ($a ^= $b));
}
int NBit(unsigned int x){
return x==0 ? 0 : (x&1)+NBit(x>>1);
}
double squareTriangle(int x1, int y1, int x2, int y2, int x3, int y3) {
return abs((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1))/2.0;
}
int MaxDivPow2(int n){
return n&-n;
}
int GetBit(int *a,int k){
return (a[k>>5]>>(k&31))&1;
}
int max(int a,int b) {
return (a>b)?a:b;
}
int min(int a,int b) {
return (a>b)?b:a;
}
n & (n-1)
) напоминает первые страницы вот этой книги. Там это называется просто формулами эквивалентных преобразований.The body of this function is sometimes seen incorrectly shortened to if (x != y) *x^=*y^=*x^=*y;. This code has undefined behavior, since it modifies the lvalue *x twice without an intervening sequence point.
Алгоритм возведения в степень
int GCD(int a,int b) {
return (!b)?a:GCD(b,a%b);
}
int GCD(int a,int b) {
return b?GCD(b,a%b):a;
}
if(!x) { /* */
} else { /* */ }
#define likely(x) __builtin_expect((x),1)
#define unlikely(x) __builtin_expect((x),0)
if(likely(a)) {
printf("1");
}
if(unlikely(a)) {
printf("2");
}
40049d: 8b 54 24 0c mov edx,DWORD PTR [rsp+0xc]
4004a1: 85 d2 test edx,edx
4004a3: 74 12 je 4004b7 <main+0x37>
4004a5: bf 31 00 00 00 mov edi,0x31
4004aa: e8 a1 ff ff ff call 400450 <putchar@plt>
4004af: 8b 44 24 0c mov eax,DWORD PTR [rsp+0xc]
4004b3: 85 c0 test eax,eax
4004b5: 75 07 jne 4004be <main+0x3e>
4004b7: 31 c0 xor eax,eax
4004b9: 48 83 c4 18 add rsp,0x18
4004bd: c3 ret
4004be: bf 32 00 00 00 mov edi,0x32
4004c3: e8 88 ff ff ff call 400450 <putchar@plt>
4004c8: eb ed jmp 4004b7 <main+0x37>
4004ca: 90 nop
4004cb: 90 nop
Однострочники на С++