작성자 없음
작성자 정보가 삭제된 글입니다.
해결된 질문
작성
·
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;
(input > max) ? max = input : max;
max = input
이 부작용을 가지고 있어 삼항 연산자 사용의 목적을 벗어납니다. 삼항 연산자는 부작용이 없어야 한다는 규칙이 일반적입니다. 삼항 연산자보다는 명확하게 if 문을 사용하는 것이 좋습니다.if 문
으로 대체:if (input > max) {
max = input;
}
따라서 max
를 갱신하는 것과 같은 중요한 작업에서는 if
문을 사용하는 것을 권장드립니다. 이는 코드의 명확성과 유지보수에 유리합니다.
관련 질문과 답변은 여기에서 확인하실 수 있습니다: [필수실습문제 해답]
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.