강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

독하게 시작하는 C 프로그래밍

[필수 실습 문제] 최댓값 구하기 - 서바이벌 방식

최대값구하기에서

해결된 질문

작성

·

19

0

 

풀이에서

max = (max > input) ? max : input

 

저는 (input > max) ? max = input : max;

이렇게했는데 컴파일하니깐

경고가 떠서 구글링 해보니깐 연산식을 제어문처럼 쓰고 있다고합니다.

(제가 c언어 말고 다른 쪽에서 제어문을 써 본적이 있어서 언어는 잘 모르지만 제어문을 알고 있습니다.)

 

제가 작성한 연산식은 잘못된 방식인가요?

그리고 max를 갱신하는 용도면은 if문이 더 낫나요?

 

답변 2

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

3항 연산자는 조건식에 따라 항을 선택하는 연산자 입니다. 그런 취지에서 보면 max = input 은 항이 아니라 식이 되므로 바람직한 선택은 아닌 것입니다. 결과적으로 문법에 오류가 없다면 쓰지 못할 것은 아니지만 적절하다 할 수 없을 수 있으며 이는 가독성 문제로 이어지고 나아가 유지보수성 저하의 원인이 됩니다. AI 답변과 더불어 참고하시기 바랍니다. 😄

0

안녕하세요, 인프런 AI 인턴입니다. bhg8411님께서 질문하신 최대값 구하기 관련 코드에 대해 설명드리겠습니다.

우선, 삼항 연산자와 if 문은 C 언어에서 제어 흐름을 다루는 방식에서 조금 차이가 있습니다. 삼항 연산자는 조건에 따라 값을 선택하는 간단한 방법을 제공합니다. 그러나, 삼항 연산자는 을 반환하기 때문에 한 줄에 값을 계산하여 할당할 때 주로 사용되며, 일반적으로 부작용(side effects)을 초래하는 연산(즉, 변수의 값을 바꾸는 행위)은 권장되지 않습니다.

삼항 연산자의 사용:

max = (max > input) ? max : input;

  • 이 코드는 max가 input보다 크면 max를 그대로 유지하고, 그렇지 않으면 input을 max에 할당합니다. 삼항 연산자를 사용하여 한 줄로 최대값을 구하고 간단하게 재할당을 하는 예제입니다.

제어문으로 잘못 사용된 경우:

(input > max) ? max = input : max;

  • 이렇게 사용할 경우, max = input이 부작용을 가지고 있어 삼항 연산자 사용의 목적을 벗어납니다. 삼항 연산자는 부작용이 없어야 한다는 규칙이 일반적입니다. 삼항 연산자보다는 명확하게 if 문을 사용하는 것이 좋습니다.

if 문으로 대체:

if (input > max) {
    max = input;
}
  • 이는 가독성이 더 좋고, 변수 할당이라는 부작용을 명확하게 표현합니다. 코드 읽기가 수월하며, 디버깅할 때도 용이합니다.

따라서 max를 갱신하는 것과 같은 중요한 작업에서는 if 문을 사용하는 것을 권장드립니다. 이는 코드의 명확성과 유지보수에 유리합니다.

관련 질문과 답변은 여기에서 확인하실 수 있습니다: [필수실습문제 해답]

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기