Assignemt Operator's Chain Rule
🏷️금지 rule
📌1. 두 sequence point 사이에서, 동일한 object가 2번 이상 수정한다면 금지
- ex)
x++
로 object x가 1번 수정
- assigenmt operator(
=
)의 좌측 피연산자로 사용되는 obejct x가 1번 수정
x = x * x++;
📌2. 두 sequence point 사이에서, 동일한 object가 1번 수정 & 1번 접근된다면 금지
- ex)
x++
로 object x를 1번 수정
x
로 obejct x를 1번 접근
y = x * x++;
🏷️예외 rule
📌1. 두 sequence point 사이에서, 특정 object를 1번 접근하는 용도가 그 object에 저장될 새로운 값을 계산하는 것이라면 허용
- ex)
=
의 우측 피연산자에서 x
가 1번 접근
=
의 좌측 피연산자에서 x
가 1번 수정
- 원래라면 두번 째 금지 rule에 의해 금지되어야 한다.
- 그러나, obejct x에 대한 접근의 목적이 object x의 값을 새로 계산하기 위함이기에 예외적으로 허용된다.
x = x + 1;