1
時是否有使用複合賦值操作符來實現像這樣的一種方式:C++複合賦值乘以
a = (a * 10) + b;
起初,我嘗試了以下內容:
a *= 10 + b;
,但是這相當於:
a = a * (10 + b)
只是好奇。今天穿過這個。這不是功課。
時是否有使用複合賦值操作符來實現像這樣的一種方式:C++複合賦值乘以
a = (a * 10) + b;
起初,我嘗試了以下內容:
a *= 10 + b;
,但是這相當於:
a = a * (10 + b)
只是好奇。今天穿過這個。這不是功課。
如果你真的需要確保a
只計算一次,你可以使用一個事實,即*=
返回左值:
(a *= 10) += b;
,但它幾乎沒有良好的代碼,我想可能是在調用之前未定義行爲到C++ 11由於修改a
兩次(一次在* =和一次在+ =)沒有干預序列點。
#include <iostream>
using namespace std;
int main()
{
int a = 5;
int b = 10;
(a *= b) += 10;
cout << a;
return 0;
}
輸出60
根本就沒有。在分配發生之前,右手邊將被縮減爲表達式。 – Joe 2011-12-15 20:01:00
'a'和'b'是你自己的類型還是原始的C++類型? – 2011-12-15 20:04:10