하암...
비주얼 스튜디오 6.0,
혹은 gcc나 ANSI C 표준을 따르는 컴파일러에서 작동하는 코드입니다.
(비주얼 스튜디오 닷넷은 ANSI C 표준이 아닙니다.)
아 참,
저게 뭐하는 거냐구요?
.......
두 개의 한자리 양의 정수를 입력받아 합을 출력하는 프로그램 입니다.
.......
직장 상사한테 뺨때기 한대 맞기 딱 좋죠?
것도 합이 두 자리 수가 되면 답이 안나와요.
-_-;
두 자리 수가 될 경우 나오게 하는 방법이 있긴 하지요.
printf를 활용 하되, 좀 색다른 방법을 써야 합니다.
....
저 코드가 어떻게 돌아가느냐구요?
.......
C언어 표준을 따르니 돌아가지요 뭐 -_-;
#include <stdio.h>를 빼도 gets와 putchar는 built-in 함수라 해서 컴파일러 자체에 내장되어 있습니다.
컴파일 하는 순간 해당 헤더가 없다면, 컴파일러가 직접 구현해서 포함시켜 주는거지요.
참... 당황스럽지요?
-_-;
main 앞에 있던 int나 void도 사라졌습니다.
main() 안에는 int형 인자가 최대 2개까지 들어갈 수 있다고 알려졌습니다만...
무슨 함수라도 부른 것 처럼 변수 이름만 들어가 있습니다.
동시에 gets에서 이 데이터형도 알 수 없는 변수에 입력받은 문자열을 집어넣고 있구요.
putchar에서 또한 알수없는 이상한 짓을 합니다.
근데... 프로그램은 잘 동작해요.
아까 말씀드린 것처럼 합의 결과도 1자리수 일 때만.
-_-)_b
사실 main 앞에는 int가 생략되어 있고,
괄호 내부의 n 또한 int n인데 int가 생략되어 있는겁니다.
ANSI C 표준이라면, 데이터형을 생략하면 자동으로 int형이 되지요.
그건 둘째치고...
근데 왜 int형에다가 문자열을 집어넣느냐...
자
입력형식을 봅시다
한자리 숫자 두개에요.
1과 2를 넣는다면
'1 2\n'
.....
빈칸까지 합해 정확히 4바이트 맞지요?
....
문제 없습니다.
-_-)_b
putchar 에서는 첫번째와 세번째 숫자만 골라내어 처리하도록 나머지연산까지 써서 처리합니다.
이로써 동작하는 거지요.
-_-)_b
이런 엽기적으로 코드를 단축시켜 버리는 기법을 숏 코딩이라 합니다.
대표적인 사람으로 Short Coding이라는 책의 저자인 일본인 Ozy 씨가 있지요.(필명 -_-)
심심하다면 자신의 코드를 한번 극단적으로 줄여보세요. ㅋㅋ
Short coding의 원리들.
if문 -> &&연산으로 대체합니다. &&연산은 앞의 식이 성립할때만 뒤의 식을 실행합니다.
-> 될수있도록 사용을 자제합니다. 함수 내에서는 물론이고, for문의 조건판별부분에도 쓸 수 있습니다.
scanf문 -> EOF가 들어오면 -1을 리턴합니다. 예외처리시 if(scanf(어쩌구저쩌구) == EOF) break;
이렇게 처리하기 보단... 그냥 입력 루프에 while(~scanf(어쩌구저쩌구))로 처리하시면 한방!
.....
숏코딩 한번 도전해보세요~
건투를 빕니다. -_-)_b
'(비정기) Dlbo's Post' 카테고리의 다른 글
주로 사용할 프로그래밍 언어를 고를 방법! (6) | 2008.09.02 |
---|---|
Lonewolf dlbo - 포스팅 계획. (0) | 2008.09.01 |
프로그래밍 언어? 외국어? (4) | 2008.08.29 |
프로그래밍의 이해 - C언어와 함께하는 Hello World!? (0) | 2008.08.27 |
프로그래밍으로 다가가는 한 걸음. 프로그래밍을 이해하기. (2) | 2008.08.26 |