this version make wrong code for left shift for 32 bits (only 32) long long s=0x01 s <<= 32; result: s =0;