[일상의 한마디]
C언어 시험
조나단봉
2011. 6. 29. 01:28
지난주 토요일에는 회사에서 시험을 보았다. C 혹은 Java/Android를 선택할 수 있고, SW 공학 문제도 있었다. 프로그래밍 언어에 대한 실기 시험도 별도로 150분간 봤다. (정식 시험 명칭은 누가 검색해서 보러 들어올까 봐 생략)
1번 문제는 아래와 같았다. (문제 의도만 그대로 남기고 표현은 변경시켰다.)
#include <stdio.h> int main(void) { int a = -1; unsigned int b = 1; printf("%d", (a>b)?1:0); printf("%d", (a<b)?1:0); printf("%d", (b>a)?1:0); printf("%d", (b<a)?1:0); return 0; }
나는 이 문제를 '당당히' 틀렸다. int와 unsigned int가 type이 달라서 cast가 일어날 것이라는 예상은 했는데, 그게 int로 될지, unsigned int로 될지 아니면, 앞에 있는 인자에 따라 될지 고민을 했고, 나름 선택을 했지만 결국 틀렸다. 찾아보니 자료가 큰 쪽의 형으로 저절로 바뀐다고 한다. (자동형변환)
char -> unsigned char -> short -> unsigned short -> int -> unsigned int -> long -> unsigned long -> float -> double
그런데 과연 이걸 알면 개발을 잘하는 것이고, 틀리면 못하는 것일까? 내가 만약 코딩하다가 저런 상황이 왔는데 잘 모르면 분명 명시적 형변환을 시켰을 것이다. 이 문제뿐만 아니라 현실에서 잘 사용하지 않는 '시험을 위한 문제'가 너무 많았다. 비단 이 시험뿐만이 아니라 세상에는 시험을 위한 시험 문제가 너무 많은 것 같다.
왠지 기초도 모르는 놈이 너무 당당하게 쓴 글 같아 보일 것 같다. 언젠가 재시험을 보게 될 텐데, 그땐 좀 더 열심히 해야 하나? ㅋㅋ