有没有办法使用复合赋值运算符来实现这样的事情:
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)
只是好奇.今天跑过这个.这不是功课.
如果你真的需要确保a只评估一次,你可以使用*=返回左值的事实:
(a *= 10) += b;
Run Code Online (Sandbox Code Playgroud)
但它不是很好的代码,我认为它可能在C++ 11之前调用未定义的行为,因为修改了a两次(一次在*=和一次在+ =)而没有插入序列点.
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |