乘以时的c ++复合赋值

Col*_*e W 1 c++

有没有办法使用复合赋值运算符来实现这样的事情:

a = (a * 10) + b;
Run Code Online (Sandbox Code Playgroud)

最初我尝试了以下内容:

a *= 10 + b;
Run Code Online (Sandbox Code Playgroud)

但这相当于:

a = a * (10 + b)
Run Code Online (Sandbox Code Playgroud)

只是好奇.今天跑过这个.这不是功课.

Cub*_*bbi 6

如果你真的需要确保a只评估一次,你可以使用*=返回左值的事实:

(a *= 10) += b;
Run Code Online (Sandbox Code Playgroud)

但它不是很好的代码,我认为它可能在C++ 11之前调用未定义的行为,因为修改了a两次(一次在*=和一次在+ =)而没有插入序列点.