15874번 - Caesar Cipher
13줄에 있는 'A' <= s[i] && s[i] <= 'Z' 부분을 46줄에서 isalpha(s[i]) == 1로 바꾸고
21줄에 있는 'a' <= s[i] && s[i] <= 'z' 부분을 54줄에서 isalpha(s[i]) == 2로 바꿨을 뿐인데,
맞았던 코드가 왜 틀렸습니다가 뜰까요??
isalpha()함수는 대문자일때 1, 소문자일때 2, 그 외에는 0을 출력하는 걸로 알고있습니다.
둘 다 같은 역할을 할텐데 왜 isalpha를 쓰면 틀릴까요ㅠㅠ
C++ 표준에서 isalpha는 알파벳일 경우 0이 아닌 어떠한 수도 리턴 될 수 있도록 되어있으며,
assert로 확인해본 결과 실제로 채점에 사용되는 컴파일러에서도 소문자면 1, 대문자면 2를 리턴하는 것이 아닌 것 같습니다.
말씀하신대로 영문자인 경우에 컴파일러마다 반환하는 값이 다른것을 확인했습니다.
감사합니다^^
댓글을 작성하려면 로그인해야 합니다.
tnsgh9603 3년 전 1
13줄에 있는 'A' <= s[i] && s[i] <= 'Z' 부분을 46줄에서 isalpha(s[i]) == 1로 바꾸고
21줄에 있는 'a' <= s[i] && s[i] <= 'z' 부분을 54줄에서 isalpha(s[i]) == 2로 바꿨을 뿐인데,
맞았던 코드가 왜 틀렸습니다가 뜰까요??
isalpha()함수는 대문자일때 1, 소문자일때 2, 그 외에는 0을 출력하는 걸로 알고있습니다.
둘 다 같은 역할을 할텐데 왜 isalpha를 쓰면 틀릴까요ㅠㅠ