인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

choijeong1615님의 프로필 이미지
choijeong1615

작성한 질문수

홍정모의 따라하며 배우는 C언어

11.8 문자열의 포인터를 정렬하기

11.8 선택정렬 코드

작성

·

187

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

안녕하세요 :)

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

 

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

strcmp(string1, string2)

 

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

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

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

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

 

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

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

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

 

감사합니다.

choijeong1615님의 프로필 이미지
choijeong1615
질문자

감사합니다.

choijeong1615님의 프로필 이미지
choijeong1615

작성한 질문수

질문하기