피연산자의 평가 순서에 따라 y는 34 or 50의 값을 가진다 ?
다크
2023.11.15
질문 제목 : 피연산자의 평가 순서에 따라 y는 34 or 50의 값을 가진다..어떻게 해서 그렇게 되는지요?질문 내용 : int a = 5 ;
int foo() { a = 20; return 30;}
void main() {
int y ;
y = a + foo();
printf(%d\n, y);
}
-
새꽃 2023-11-15
피연산자의 평가 순서는
y = a + foo(); 에서
a가 먼저가 되면 a가 외부변수로 5로 초기화가 되어 있기 때문에 5 + 이후 함수 호출이 일어나게 되고
함수에서 외부 변수를 20으로 바꾸고 30을 리턴하기 때문에 기존에 먼저 연산이 된 5 + 에 리턴된 30이
더해져서 35가 되는것 같고 반대로 함수 연산이 우선이라면 함수부터 실행이 되기 때문에
외부변수가 20으로 값이 바뀌고 30을 리턴, 리턴 받은 30과 외부변수 a를 더하는데 함 -
파라나 2023-11-15
34는 어떻게 나오는지 모르겠네요;;
y = a + foo(); 에서 함수 먼저 실행이 되면 50이 되고 a + 가 먼저 되고 그 다음에 함수 실행이 되면 35가
되는걸 말하는게 아닌가요? 연산 순서에 따라서 35 또는 50의 결과값이 나온다는...
y = foo() + a; 로 바꿔도 함수 호출이 먼저네요
피연산자의 평가 순서가 함수가 더 먼저인가 보네요
마찬가지인 경우로 연산자 우선순위가 같으면 오른쪽에서 왼쪽으로 계산된다던가 했는데...
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2697605 | 이 함수좀... | agine | 2025-06-09 |
2697574 | 배열 기본적인질문 (3) | 민트향 | 2025-06-09 |
2697549 | 배열 초기화 (4) | 나리 | 2025-06-08 |
2697465 | 수다님...^^ (2) | 가론 | 2025-06-08 |
2697432 | 서버 만드는 함수에서 궁금한게있어요~ | 파랑 | 2025-06-07 |
2697401 | 열혈강의 문제오류 (1) | 꿈 | 2025-06-07 |
2697374 | 기초적인 C언어 프로그래밍 입니다. | 얼 | 2025-06-07 |
2697341 | 좌우대칭 문제인데 Q가 입력되면 종료가 되야하는데 되지않습니다 | 무지개 | 2025-06-07 |
2697314 | fprintf와 fscanf 로 파일 입출력 할떄 | 밝음이 | 2025-06-06 |
2697293 | 툴 소스 뽑아내는법 | 도움 | 2025-06-06 |
2697264 | 소소한거 두어가지 질문할께요~ (8) | 별솔 | 2025-06-06 |
2697235 | scanf로 인풋 받을 때?! | 보담 | 2025-06-06 |
2697207 | 열혈강의 연습문제 질문이요~ (2) | 맥적다 | 2025-06-05 |
2697182 | strcmp, strtok - 어떤 기능을 하는지... | 루다 | 2025-06-05 |
2697129 | [질문] 아래 저축액을 계산하는 프로그램 ㅠ 추가 질문 (7) | 찬늘 | 2025-06-05 |
2697072 | 쌩초보 질문! (1) | 얀 | 2025-06-04 |
2697050 | 도움부탁드립니다.. | 화이트 | 2025-06-04 |
2697023 | gotoxy함수, 어떻게 사용하죠? (3) | 적송 | 2025-06-04 |
2696994 | c언어를 막 시작한 초보인데 질문이 있어용 ㅠㅠ (2) | 귀1여운렩 | 2025-06-03 |
2696944 | 윈도우 콘솔프로그램 질문드립니다 (2) | 꽃님이 | 2025-06-03 |