23분52초 문제에 질문드립니다.
구글링도 해봤는데 좀 애매해서 후치연산자를 좀 엄밀하게 설명해주셨으면 좋겠어요.
해당 문제
a += ++a % b++ ? c*d : b/c에서
b/c를 계산 할때 후치연산자를 먼저 적용하고 연산하시던데
해당 줄의 전부를 모두 계산하고 최종 a에 대입까지 완료하고 나서야 후치연산자를 계산하는게 아닌가요?
구글링으로 찾아보니 컴파일러에 따라 연산 구조가 달라 순서도 다르다고 하던데
정확히 연산 우선순위에서 어떤시점에 후지연산이 적용 되는건지 알려주세요.
답변 1
0
해당 문제는 연산자의 우선순위와 연산자의 실행 시점을 명확히 이해해야 합니다.
1. 전후치 연산자의 계산방법
전치 증가 연산자(
++a) 는 변수a를 먼저 1 증가시키고 그 값을 사용합니다.후치 증가 연산자(
b++) 는 표현식 평가에 원래 값b를 사용하고, 표현식 평가 후b의 값을 1 증가시킵니다.
2. 식 상세 분석
식 a += ++a % b++ ? c * d : b / c을 분석하면 다음과 같습니다:
++a는a를 먼저 1 증가시키고, 증가된 값을 사용합니다.b++는 현재의b값을 사용하고, 이 식이 평가를 마친 후b를 1 증가시킵니다.%연산이++a와b++사이에서 수행됩니다. 이때b++는b의 원래 값을 사용합니다.조건 연산자
?:는%연산의 결과에 따라c * d또는b / c중 하나를 계산합니다. 여기서 중요한 점은b / c가 선택될 경우, 조건 평가 시점에서 사용된b의 값이 사용됩니다. 즉,b++의 증가 전 값입니다.a +=는 이전에 계산된 값(조건 연산의 결과)을a에 더합니다.
3. 컴파일러의 동작 관련하여
대부분의 표준 C/C++ 컴파일러는 이와 같은 연산자의 우선순위와 후치 연산자의 처리 시점을 명확히 따릅니다. 구글링해보셨더니
컴파일러에 따라 세부적인 동작이 다를 수 있다고 하셨다 했는데, 해당 문제(정보처리 기사나 산업기사)는 C/C++기준으로 작성된 문제라 C와 C++기준으로 생각하시면 됩니다~!
kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.
1
6
0
이론 공부법 요약본 버전 업데이트 문의
0
7
1
SubStack 신청 완료했습니다!
0
5
2
domain에 @Entity 와 Repository를 함께 둔 이유가 궁금합니다
1
11
1
피드백 내용 문의드립니다.
0
15
0
백준 서비스 종료로 인한 강의 자료 업데이트 요청드립니다.
0
19
1
노드
0
13
1
해당 프로젝트를 똑같이 따라하려니 spring installer가 버전이 17부터 가능하네요.
0
7
1
Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.
0
21
2
테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.
0
10
1
백준 사이트 준비중이라 문제를 볼 수 가 없어요
0
12
1
작업형 1번문제... 환경관련
0
18
2
09차 네이버 영화 리뷰 수집 실습 관련 질문
0
22
1
12회 기출은 언제 업데이트 될까요??
0
23
2
알파벤티지 sleep(5) 관련 문의
1
33
2
아무도 모르게 책 내시면 모르실 줄 알고!!
1
33
2
2022년 2회차 실기 4번
0
47
1
6:07
0
105
1
04. DB 파트 기출 해설(실기 4번)
0
438
3
12번 강의 영상이 너무 별로에요...
0
467
0
01. 언어 특성 활용_프로그래밍[개념] 의 13:18초 부분에 대한 질문입니다.
0
381
2
08. 응용 문법 활용(5)_프로그래밍[기출] 23분 문제 질문
0
369
1
강의 3분 50초 두번째 예제코드 질문드립니다.
0
345
1
dbms의 기출문제를 보고싶습니다.
0
767
2





