xodbs1212   5년 전

어느 부분이 틀린걸까요? 친구랑 함께 찾아봤는데 잘 모르겠네요. 문자열 너무 어려워서 한문제 푸는데 일주일씩 걸리는듯 해요 ㅠㅠ.

luniro   5년 전

asciiA <= ascii <= asciiZ로 하시면 ascii가 대문자가 아니어도 충분히 큰 경우(ex ascii = 97 = 'a')에도 대문자로 인식하게 됩니다

예시의 경우 (asciiA <= ascii(=97) ) <= asciiZ가 되어 1 <= asciiZ가 되기 때문에 a여도 대문자 카운트가 올라가는 것이지요

if문 조건 부분을 (asciiA <= ascii && ascii <= asciiZ)로 바꾸시는 편이 좋을 것 같습니다 소문자에 대해서도 마찬가지입니다



xodbs1212   5년 전

그렇군요 감사합니다! 수학 문제처럼 생각해 버렸네요.

xodbs1212   5년 전

그런데 (asciiA<=ascii<=asciiZ) 이렇게 해버리면 둘 중 하나만 맞아도 조건에 맞는걸로 인식하는건가요?

luniro   5년 전

비교연산을 하게되면 true일 경우 1 false일 경우 0을 반환합니다 그래서 asciiA <= ascii <= asciiZ로 하면 asciiA <= ascii가 ascii의 값에 따라 0 또는 1이 되어 (0 or 1) <= asciiZ가 되기 때문에 ascii의 값에 관계없이 항상 맞는 식으로 인식을 하게 됩니다

luniro   5년 전

둘 중 하나만 맞거나 둘 다 맞아야 하는 경우에 대해서는 논리연산자(&&, ||)를 찾아보시면 될 것 같습니다 비교를 여러 번 해야하는 경우 사용하게 됩니다

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