피연산자의 평가 순서에 따라 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; 로 바꿔도 함수 호출이 먼저네요
피연산자의 평가 순서가 함수가 더 먼저인가 보네요
마찬가지인 경우로 연산자 우선순위가 같으면 오른쪽에서 왼쪽으로 계산된다던가 했는데...
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2691510 | sizeof 연산자 질문입니다 (2) | 종달 | 2025-04-14 |
2691483 | 파일 오픈시 에러 질문드립니다. (2) | 호습다 | 2025-04-14 |
2691450 | [visual c++ 툴]기초 질문 (3) | 해긴 | 2025-04-13 |
2691393 | UNIX 시스템을 사용하려면 어떤 프로그램이 좋을까요? (5) | 든솔 | 2025-04-13 |
2691334 | ㅠㅠ에러 (1) | Loseless | 2025-04-12 |
2691304 | 포인터배열에 대해 질문요 | 달님 | 2025-04-12 |
2691279 | float-정수변환-2진수변환 | 핫블루 | 2025-04-12 |
2691224 | 인자관련 질문입니다. (2) | 아잉형님 | 2025-04-11 |
2691196 | 원형 큐와 스택에서의 문제해결 (2) | 반혈 | 2025-04-11 |
2691169 | 동적할당 어디가 잘못된걸까요. | 츠키 | 2025-04-11 |
2691082 | puts vs printf | 리네 | 2025-04-10 |
2691058 | (C언어) 구구단을 작성해 봤는데 문제가 발생했습니다. (6) | 제나 | 2025-04-10 |
2690947 | 윈도우 메모장에서 버츄얼박스 우분투 붙여넣기 질문 (1) | 유우 | 2025-04-09 |
2690920 | 무슨 의미 인가요? | 딸기맛캔디 | 2025-04-09 |
2690891 | c++ 은행계좌 프로그램 | 알찬마루 | 2025-04-08 |
2690834 | c언어 if문에서 출력 질문합니다 ㅜㅜ (2) | 파랑새 | 2025-04-08 |
2690809 | c언어 질문좀 부탁드리겠습니다 | 개구리 | 2025-04-08 |
2690777 | 말 표현에서 궁금한점이 있습니다. 배열을 통째로 넘겨받으려면 매개변수로 배열을 선언할 수 있어야한다? (8) | 별햇님 | 2025-04-07 |
2690749 | 피라미드 질문드립니다 (for문 한개) | 도래솔 | 2025-04-07 |
2690718 | 함수 포인터반환 함수 질문 | 에드워드 | 2025-04-07 |