stackprobe7s_memo

何処にも披露する見込みの無いものを書き落とす場所

swap (int a, int b)

int a = rand(); // any value
int b = rand(); // any value

// ...

{
	int tmp = a;
	a = b;
	b = tmp;
}
{
	a ^= b;
	b ^= a;
	a ^= b;
}
{
	a -= b;
	b += a;
	a = b - a;
}
{
	a += b;
	b = a - b;
	a -= b;
}
{
	a = b - a;
	b -= a;
	a += b;
}
/*
requires:
	1 <= a &&
	1 <= b &&
	(__int64)a * b <= INT_MAX
*/

{
	a *= b;
	b = a / b;
	a /= b;
}