有关c语言复合赋值运算的问题

img

img


请问一下这里结果为啥等于66

(1)b<<2,意思是b转换为二进制,并左移两位。b=11=1011(二进制),左移两位=101100=44(十进制)。
(2)b %= b<<2,等于b%44。即11%44=11。
(3)b += b %= b << 2,等于b+=11=11+11=22。
(4)a += b += b %= b << 2,等于a+=22->a=a+22=11+22=33。此时a=33
(5)a += a += b += b %= b << 2,等于a+=33->a=a+33=33+33=66

a+=a+=b+=b%=b<<2; 分解出来就是下面的步骤

   b = b % (b << 2);
   b = b + b;
   a = a + b;
   a = a + a;

难道有人会写出这种代码吗