A strange way to compute GCD
A strange way to compute GCD in one line
1int gcd(int x, int y)
2{
3 while (x ^= y ^= x ^= y %= x)
4 ;
5 return y;
6}
有趣的是:这种写法在CPP17之前是ub(在同一个语句中多次改变一个变量的值,且反复使用该变量的值,为ub 因为标准没有规定求值的顺序),在CPP17中,对于求值的顺序做了进一步的规定,从而这种写法具备了可移植性。