안녕하세요.
쉽게 설명드릴께요.
x = 10;
y = x++ + ++x;
이런 코드가 있다고 할때, 이 코드만 이해하시면 질문내용이 이해가 되실겁니다.
우선 연산을 하려고 하는데, 변수가 포함되어 있다면 연산전에 해당 변수의 값을 저 수식에 대입을 시켜야 합니다.
연산순서도 좌에서 우로 되겠지요.
그럼 먼저 x++ 부분을 수치화 해야 합니다. 여기에서 x++가 후위연산입니다.
그럼 x의 값이 먼저 수식에 대입이 된후 x++연산이 진행됩니다.
y = 10 + ++x;
이렇게 x++자리에 10이 대입이 되고, x++가 진행되면 x=11 이 됩니다.
다음 변수를 보면 ++x가 있습니다. ++x가 전위연산이므로 먼저 ++x를 수행하고 그 자리에 x값을 대치합니다.
현재 x가 11이므로 ++x를 하면 x=12가 됩니다.
y = 10 + 12;
그래서 y값은 22가 되지요. 이부분만 이해하시면 쉽습니다.
예를들어 x = 10; y = x++; z = y-- ; 이라할때 저는 두번째 식이 x=y, y=y+1이니까 y가 11이라 하고 세번째 식에서z=y, y=y-1이니까 z= 11 y가 1 감소해서 y=10
즉 x=10, y=10, z=11이라고 계산했는데 이렇게 계산하는 방법이 맞나요? 챗지피티 답변이 부정확한거같아 질문합니다
질문을 보면
x=10;
y=x++; 이므로, x++가 후위연산이므로
y=10; 이되고 x는 11이 됩니다.
z=y--; 를 수행하면, y--후위연산이므로
z=10; 이 되고, y--가 연산되어 y는 9가 되지요.
최종적으로 x=11, y=9, z=10 이 되지요.
그리고 질문에서
두번째 식이 x=y, y=y+1이니까 y가 11이라 하고 세번째 식에서z=y, y=y-1이니까 z= 11 y가 1 감소해서 y=10
이 부분이 이해가 안되서요.
x = 10; y = x++; z = y-- ;
이 코드를 풀어서 저렇게 나왔다는 것인지, 아니면 두번째 식이 따로 있다는건지는 잘 모르겠습니다.
x=y, y=y+1;
이부분을 위에 코드와 연계해서 진행을 해야한다면,
x=9; y=9+1;
이 되겠네요. x=9, y=10 이 되지요.
세번재 식도
z=y, y=y-1
위코드와 계속 연결한다면,
z=10, y=10-1
이 되므로 최종 x=9, y=9, z=10 이 되겠네요.
다른 부분이 궁금하시다면 질문 주세요~