有没有办法使用复合赋值运算符来实现这样的结果:
a = (a * 10) + b;
最初我尝试了以下内容:
a *= 10 + b;
但这相当于:
a = a * (10 + b)
好奇。今天跑过这个。这不是作业。
答案 0 :(得分:6)
如果您确实需要确保只评估a
一次,则可以使用*=
返回左值的事实:
(a *= 10) += b;
但它不是很好的代码,我认为它可能在C ++ 11之前调用未定义的行为,因为修改a
两次(一次在* =和一次在+ =)而没有插入序列点。 / p>
答案 1 :(得分:0)
#include <iostream>
using namespace std;
int main()
{
int a = 5;
int b = 10;
(a *= b) += 10;
cout << a;
return 0;
}
输出60。