티스토리 뷰

ETC

Short coding

Jake Yoon 2009. 10. 18. 21:35

요즘 short coding이라는 책을 읽구 있다.
ACM을 준비하기 위해 보면서 참 많은 것을 느낀다

그중 하나를 소개하고자 한다.
우리는 파일입출력에서 scanf함수로 여러줄의 데이터를 받아올때, 어떻게 처리하는가?
주로 이렇게 할 것이다

while(scanf("%d",&var)!=EOF)
{ ... }

이렇게하면 데이터를 모두 읽어올때 까지 정수형으로 읽어올 것이다.
그러나 short coding에서는 이를 이렇게 처리해버렸다

while(~scanf("%d",&var))
{ ... }

이렇게 해버릴 수 있는 이유는
scanf는 값이 입력되지않으면 EOF 즉, -1 값을 리턴하게 된다.
-1은 2진수로 보면
1111111111111111 이다. 이를 ~연산자로 연산을 하게 되면 0000000000000000 즉, 0이된다.
그러므로 이러한 방식으로 while문을 처리할 수있는 것이다.

어찌보면 뭐가 별 차이 일까라고 생각할 수있다
그러나 EOF라는 것은 stdio 헤더가 있어야만 사용할 수 있다. 또한 -1로바꾸는 것보다도 ~연산자를 사용하는것이
몇바이트라도 줄이고자 하는 short coding에 있어서는 중요한 핵심이 아닐까

열심히 공부하자!

공부해서 남주자!
댓글