피연산자의 평가 순서에 따라 y는 34 or 50의 값을 가진다 ?
두나
2023.04.01
질문 제목 : 피연산자의 평가 순서에 따라 y는 34 or 50의 값을 가진다..어떻게 해서 그렇게 되는지요?질문 내용 : int a = 5 ;
int foo() { a = 20; return 30;}
void main() {
int y ;
y = a + foo();
printf(%d\n, y);
}
-
여름
피연산자의 평가 순서는
y = a + foo(); 에서
a가 먼저가 되면 a가 외부변수로 5로 초기화가 되어 있기 때문에 5 + 이후 함수 호출이 일어나게 되고
함수에서 외부 변수를 20으로 바꾸고 30을 리턴하기 때문에 기존에 먼저 연산이 된 5 + 에 리턴된 30이
더해져서 35가 되는것 같고 반대로 함수 연산이 우선이라면 함수부터 실행이 되기 때문에
외부변수가 20으로 값이 바뀌고 30을 리턴, 리턴 받은 30과 외부변수 a를 더하는데 함 -
탄성
34는 어떻게 나오는지 모르겠네요;;
y = a + foo(); 에서 함수 먼저 실행이 되면 50이 되고 a + 가 먼저 되고 그 다음에 함수 실행이 되면 35가
되는걸 말하는게 아닌가요? 연산 순서에 따라서 35 또는 50의 결과값이 나온다는...
y = foo() + a; 로 바꿔도 함수 호출이 먼저네요
피연산자의 평가 순서가 함수가 더 먼저인가 보네요
마찬가지인 경우로 연산자 우선순위가 같으면 오른쪽에서 왼쪽으로 계산된다던가 했는데...