#include <iostream>usingnamespacestd;
#define SWAP(a, b)
{
char tempbuf[10];
memcpy(tempbuf, &a, sizeof(a));
memcpy(&a, &b, sizeof(b));
memcpy(&b, tempbuf, sizeof(b));
}
int main()
{
int a = 2;
int b = 10;
SWAP(a, b);
cout<<a<<endl;
cout<<b<<endl;
return0;
}
不使用if,?,switch或者其他判断语句比较两个变量的大小?
#include <iostream>usingnamespacestd;
bool fun(int a, int b)
{
return a > b;
}
int max(int a, int b)
{
bool flag = fun(a, b);
return flag * a + (1 - flag) * b;//巧妙
}
int main()
{
return0;
}
#include <iostream>usingnamespacestd;
int max(int a, int b)
{
return ((a + b) + abs(a - b)) / 2;
}
int main()
{
int a = 2;
int b = 5;
int n = max(a, b);
cout<<n<<endl;
return0;
}
利用位运算实现加法?
#include <iostream>usingnamespacestd;
int Add(int a, int b)
{
if(b == 0)
{
return a;
}
int sum, carry;
sum = a ^ b;
carry = (a & b) << 1;
return Add(sum, carry);
}
int main()
{
int a = 10;
int b = 245;
cout<<Add(a, b)<<endl;
return0;
}
#include <iostream>usingnamespacestd;
int Average(int x, int y)
{
return (x & y) + ((x ^ y) >> 1);
}
int main()
{
int a = 10;
int b = 30;
cout<<Average(a, b)<<endl;
return0;
}
不用循环判断一个数是不是2的N次方?
#include <iostream>usingnamespacestd;
int main()
{
unsignedint a = 0;
cout<<"Please input a number:";
cin>>a;
if((a & (a - 1)) == 0)
{
cout<<"yes"<<endl;
}
else
{
cout<<"no"<<endl;
}
return0;
}