• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

11.8 선택정렬 코드

22.02.10 22:47 작성 조회수 131

0

선택 정렬 함수에서 if문에 if(strcmp(arr[min_idx],arr[j])>0)

min_idx=j;

대신 

if(strcmp(arr[min_idx],arr[j])==1)

min_idx=j;

으로 써도 똑같이 실행될거라 생각하고 아래와 같이 작성했는데 결과값이 다른 이유가 뭔가요? (strcmp에서 왼쪽값이 더 크면 1을 반환하는 것으로 알고 있습니다)

 

답변 1

답변을 작성해보세요.

0

강민철님의 프로필

강민철

2022.02.11

안녕하세요 :)

전체 코드를 보면 더 상세히 도와줄 수 있을 듯 한데요,

 

strcmp에 대해 정확하게 말씀드리자면  아래와 같은 식이 있었을 때

strcmp(string1, string2)

 

리턴하는 값은 아래와 같습니다.

- string1 < string2 인 경우: 음수 반환

- string1 == string2 인 경우: 0 반환

- string1 > string2 인 경우: 양수 반환

 

찾아보니, strcmp가 -1, 0, 1 을 반환하는 경우도 있지만,

음수, 0, 양수를 반환하는 경우도 있는 듯 보입니다.

따라서 0을 기준으로 범위를 나누어주는 것이 좋겠습니다 :)

 

감사합니다.

감사합니다.