제가 지난 C언어 수업 시간에, 교수님께서 궁금증이 생기셨던 것 같았어요......
'C에서 제공되는 문자 검사 함수는 조건이 맞으면 0이 아닌 값을 반환한다'
여기에서 왜 16이 나왔을까? 라는 의문을 가지셨죠...... (그 이유를 잠시 후에 알려드릴게요~!)
그래서!! 제가 교수님의 궁금증을 해소해 드리고자 분석을 해 보았어요 ^^
저는, C언어로 ASCII 코드 값(0~127)을 모든 문자 검사 함수에 반복문으로 대입을 하였고,
그 결과를 보고서 형식으로 만들어서 교수님께 메일을 보내드렸죠......
교수님께서 수고 많이 하셨다고 하시면서, 자기 주도적 학습 태도를 유지하라고도 부탁 하셨어요 ^^
그리고 중간고사 시험 당일, 교수님께서 이에 대한 발표 자료를 만들 수 있는지를 여쭤보셨어요......
그래서!! 저는 제안(?)을 수락했고, 발표 자료를 만들어서 다음 수업 시간에 발표를 하게 되었죠 ^^
그 결과를 지금!! 알려드릴게요~!
테스트 환경은 Visual Studio 2010 기준이고, 빈 칸은 0으로 생각하시면 돼요~!
기본적으로 반환되는 대응 값은,
대문자 : 1
소문자 : 2
숫자 : 4
공백 문자 : 8
특수 문자 : 16
제어 문자 : 32
이렇게 반환하고, 예외적으로
isprint(' ') : 64(스페이스만!!)
isxdigit() : 조건에 맞으면 128이 반환됩니다.
또한, isascii()는, 모든 ASCII 문자에 대해서 1을 반환합니다.
같은 검사 함수일지라도, 문자의 분류가 다를 수 있기에, 이에 따라 서로 다른 값을 반환하는 것 같네요 ㅎㅎ
항상 같은 값만 반환하는 줄 알았는데, '0이 아닌 값'의 함정에 빠질 뻔했던 이번 과제였네요 ㅎㅎ
그럼 20000~!
[참고 자료] ASCII 코드 표