문장 x=(a=5,b=+a);실행 후 x,a,b 의 값 은 순서대로? a 의 값 이 도대체 5 인지 6 인지 알 고 싶 습 니 다.

문장 x=(a=5,b=+a);실행 후 x,a,b 의 값 은 순서대로? a 의 값 이 도대체 5 인지 6 인지 알 고 싶 습 니 다.

결 과 는 모두 6 이 고 전체 표현 식 연산 결 과 는 다음 과 같다.
0.변수 가 새로운 값 을 부 여 받 을 때 오래된 값 이 없다 는 것 을 명심 하 세 요.
1.a 우선 5 라 는 값 이 부여 된다.
2.+앞에서 먼저 가산 하고 나중에 계산 하기 때문에 a 가 먼저 6 으로 증 가 했 고 이때 5 는 이미 사 라 졌 다.
3.a 증가 한 후에 b 는 연산 후의 a,즉 6 이 부여 되 었 다.
4.쉼표 표현 식(괄호 안에 있 는 여러 개의 쉼표 는 쉼표 표현 식,일반적으로 마지막 으로 계산)의 값 은 항상 괄호 중의 마지막 을 취하 기 때문에 x 에서 b 의 값 을 취 합 니까?아니면 6 을 취 합 니까?
못 믿 겠 으 면 프로그램 써 봐.
다음 표현 식 을 고려 하여 확장 합 니 다:
int x,a,b,c;
x = (a = 5, b=a++,c=++a,456,789);
//괄호 부터 계산 해 야 합 니 다.
//a 처음 엔 5
//b=a++,++연산 은 뒤에 있 고,먼저 계산 한 후에 추가 하고,먼저 a 의 5 를 b 에 게 준 다음 에 a 를 1 로 추가 합 니 다.이때 b 는 5 이 고,a 는 6 입 니 다.
/c=++a,+연산 은 앞 에 있 습 니 다.먼저 가산 하고 나중에 계산 합 니 다.이전 식 a 는 6 이 었 기 때문에 a 는 1 을 더 해서 7 이 되 고 c 를 주 었 습 니 다.이때 a 는 7 이 고 c 도 7 입 니 다.
//마지막 에 쉼표 입 니 다.x 는 반드시 뒤의 값,즉 789 입 니 다.
//그래서 마지막 x=789,a=7,b=5,c=7
당신 이 C 를 배 웠 는 지,C+를 배 웠 는 지 모 르 기 때문에,이 두 식 은 구체 적 으로 프로 그래 밍 출력 방법 을 쓰 지 않 겠 습 니 다.