강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của lkdof274317
lkdof274317

câu hỏi đã được viết

Bài viết xử lý thông tin của Yoonpago DB/Lập trình tất cả trong một

[Tất cả trong một] 03. Sử dụng ngữ pháp cơ bản (thấp hơn)_Lập trình [Concept]

23분52초 문제에 질문드립니다.

Đã giải quyết

Viết

·

330

·

Đã chỉnh sửa

0

구글링도 해봤는데 좀 애매해서 후치연산자를 좀 엄밀하게 설명해주셨으면 좋겠어요.

 

해당 문제

a += ++a % b++ ? c*d : b/c

에서

b/c를 계산 할때 후치연산자를 먼저 적용하고 연산하시던데

해당 줄의 전부를 모두 계산하고 최종 a에 대입까지 완료하고 나서야 후치연산자를 계산하는게 아닌가요?

구글링으로 찾아보니 컴파일러에 따라 연산 구조가 달라 순서도 다르다고 하던데

정확히 연산 우선순위에서 어떤시점에 후지연산이 적용 되는건지 알려주세요.

pythonjavacdbms/rdbms정보처리기사

Câu trả lời 1

0

yoonpago93님의 프로필 이미지
yoonpago93
Người chia sẻ kiến thức

해당 문제는 연산자의 우선순위와 연산자의 실행 시점을 명확히 이해해야 합니다.

 

1. 전후치 연산자의 계산방법

  • 전치 증가 연산자(++a) 는 변수 a를 먼저 1 증가시키고 그 값을 사용합니다.

  • 후치 증가 연산자(b++) 는 표현식 평가에 원래 값 b를 사용하고, 표현식 평가 후 b의 값을 1 증가시킵니다.


2. 식 상세 분석

a += ++a % b++ ? c * d : b / c을 분석하면 다음과 같습니다:

  • ++aa를 먼저 1 증가시키고, 증가된 값을 사용합니다.

  • b++는 현재의 b 값을 사용하고, 이 식이 평가를 마친 후 b를 1 증가시킵니다.

  • % 연산이 ++ab++ 사이에서 수행됩니다. 이때 b++b의 원래 값을 사용합니다.

  • 조건 연산자 ?:% 연산의 결과에 따라 c * d 또는 b / c 중 하나를 계산합니다. 여기서 중요한 점은 b / c가 선택될 경우, 조건 평가 시점에서 사용된 b의 값이 사용됩니다. 즉, b++의 증가 전 값입니다.

  • a +=는 이전에 계산된 값(조건 연산의 결과)을 a에 더합니다.

3. 컴파일러의 동작 관련하여

  • 대부분의 표준 C/C++ 컴파일러는 이와 같은 연산자의 우선순위와 후치 연산자의 처리 시점을 명확히 따릅니다. 구글링해보셨더니

    컴파일러에 따라 세부적인 동작이 다를 수 있다고 하셨다 했는데, 해당 문제(정보처리 기사나 산업기사)는 C/C++기준으로 작성된 문제라 C와 C++기준으로 생각하시면 됩니다~!

lkdof274317님의 프로필 이미지
lkdof274317
Người đặt câu hỏi

그럼 영상에 있는 풀이가 잘못된게 맞네요?

lkdof274317님의 프로필 이미지
lkdof274317
Người đặt câu hỏi

풀이가 잘못된게ㅜ맞나요?

yoonpago93님의 프로필 이미지
yoonpago93
Người chia sẻ kiến thức

네~!

영상풀이말고 제가 달아드린 답글이 맞다고 이해하시면 될 것 같습니다~!

불편을 드려 죄송합니다~!

Hình ảnh hồ sơ của lkdof274317
lkdof274317

câu hỏi đã được viết

Đặt câu hỏi