Is “++l *= m” undefined behaviour?

后端 未结 2 1827
暗喜
暗喜 2021-01-17 09:42

I have started studying about C++0x. I came across the follow expression somewhere:

int l = 1, m=2;
++l *= m;

I have no idea whether the se

2条回答
  •  轮回少年
    2021-01-17 10:06

    The expression is well defined in C++0x. A very Standardese quoting FAQ is given by Prasoon here.

    I'm not convinced that such a high ratio of (literal Standards quotes : explanatory text) is preferable, so I'm giving an additional small explanation: Remember that ++L is equivalent to L += 1, and that the value computation of that expression is sequenced after the increment of L. And in a *= b, value computation of expression a is sequenced before assignment of the multiplication result into a.

    What side effects do you have?

    • Increment
    • Assignment of the multiplication result

    Both side-effects are transitively sequenced by the above two sequenced after and sequenced before.

提交回复
热议问题