changwonchun   2년 전

체점을 하려는데 17번째 줄에서 밑의 에러가 뜹니다.

i와 word.length()의 자료형이 다르다고 하는 것 같은데 어떻게 고쳐야 할까요?

Main.cc: In function ‘int main()’:
Main.cc:17:20: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   17 |   for(int i = 0; i < word.length(); i++){
      |  

euphoric_n   2년 전

C++ string 내부에서 length() 함수의 리턴 타입은 int가 아닙니다.

Warning 메시지대로 

‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} 

인데요 int 타입과 해당 타입을 비교하려고 하니 경고 메시지를 띄워주지만

일반적으로 string의 길이가 int 범위를 벗어날 일이 없으므로 long unsigned int 타입을 int로 캐스팅해도 문제가 생기지 않습니다.

error는 발생 시 컴파일이 불가하고 warning은 경고문이 출력되지만 컴파일은 가능하다는 차이점이 있습니다.

changwonchun   2년 전

감사합니다! 그런데 제출을 하니까 저렇게 warning이 뜨고 채점이 0%도 진행되지 않고 바로 실패했다고 뜨는데 이쪽 문제는 아닌 건가요?

euphoric_n   2년 전

네. 이쪽 문제는 아닙니다. 프로그램 로직을 다시 점검해보세요.

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