작성
·
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을 기준으로 범위를 나누어주는 것이 좋겠습니다 :)
감사합니다.
감사합니다.