chlduq04   9년 전

분명 예제같은거 넣어도 맞는거 같은데 틀렸다고 나와서..

어디가 문제인지 도와주실분...ㅠㅠ

pichulia   9년 전

11 1 넣었을 때 10 이 나오고

111 1 넣었을 때 0 이 나오네요.

디버깅 해보고 다시 돌아오겠습니다.

pichulia   9년 전

알아냈습니다.

strlen 함수는 return하는 값의 형태가 unsigned int 입니다.

따라서 strlen(~~) - i - 1 계산한 결과값도 자동으로 unsigned int형으로 캐스팅이 됩니다.....

lobool dd = strlen("a") - 2 >= 0;

printf("%d\n",dd);

위의 코드를 실행시켜보면 dd값이 true가 나오는 것을 확인할 수 있습니다.

int l1 = strlen(input1);

int l2 = strlen(input2);

이런 식으로 길이를 저장하는 변수를 따로 관리하는 방식을 추천합니다.

이거랑 비슷한 문제로 vector의 .size();함수도 있는데요,

vector<int> v; for(int i=0; i<v.size() - 1; i++){printf("hi");}
v에 아무것도 없을 경우 v.size() = 0 이라서 
hi가 안나오는게 정상이겠지만
v.size();함수의 return 값이 unsigned int라서 
v.size()-1 은 -1이 아니라 2^32 - 1 을 나타내게되고,
무한루프를 돌게됩니다.

pichulia   9년 전

lobool 이 아니라 bool 입니다. 오타가 잇었네욬ㅋㅋㅋㅋ

chlduq04   9년 전

거길 바꿔도 오류라고 뜨네요 ㅠ

댓글을 작성하려면 로그인해야 합니다.