2011-12-15 11 views
1

を乗算すると、このような何かを達成するための複合代入演算子を使用する方法はあります:C++化合物の割り当て

a = (a * 10) + b; 

当初、私は次のことを試してみました:

a *= 10 + b; 

が、これは同等です:

a = a * (10 + b) 

ちょっと好奇心。今日はこの間に蘭。これは宿題ではありません。あなたが本当にことを確認する必要がある場合は

+3

ありません。代入が行われる前に、右辺が式に縮小されます。 – Joe

+0

'a'と 'b'はあなた自身の型か原始的なC++型ですか? –

+0

@arasmussen 'a'と' b'は私の場合整数です –

答えて

6

aあなたは*=リターンが左辺値という事実使用することができ、一度だけ評価されます:

(a *= 10) += b; 

を、それはほとんど良いコードだ、と私はそれが前に未定義の動作を起動するかもしれないと思います介入するシーケンスポイントなしでaを2回(* = 1回と+ = 1回)変更することにより、C++ 11に追加されました。単に

+0

+1これは私が探していたものだと思います。ありがとう。 –

+0

@Cole W - なぜこのようなコードを読まないのですか? –

+0

@エジプト私はそうではありません。あなたがそれをすることができるかどうか私は興味があったので、これは純粋でした。 –

0

https://ideone.com/WWudo

#include <iostream> 

using namespace std; 

int main() 
{ 
     int a = 5; 
     int b = 10; 
     (a *= b) += 10; 
     cout << a; 
     return 0; 
} 

出力60

関連する問題