Escape sequence |
의미 |
표현 |
\' |
홑따옴표(single quote) |
' |
\" |
쌍따옴표(double quote) |
" |
\\ |
역슬래쉬(back slash) |
\ |
\0 |
널(null) |
공백
문자 |
\a |
경고(alert) |
비프(beep)음을
냄 |
\f |
폼
피드(form feed) |
서식이송(프린트시
한
장
넘김) |
\r |
캐리지
리턴(carriage return) |
커서의
위치를
맨
앞으로
옮김 |
\n |
개행(new line) |
다음
줄로
커서를
이동 |
\b |
백스페이스(backspace) |
커서
바로
앞의
문자를
삭제 |
\t |
수평탭(horizontal
tab) |
커서를
우측으로
한
탭
이동 |
\v |
수직탭 (vertical
tab) |
커서를
아래쪽으로
한
탭
이동 |
위와 같은 녀석들인데 \n이 아마 최고로 많이 쓰일꺼다.. 그 다음이 \t, \", \'정도..
저중 많은것들이 콘솔어플을 위한 것이라 봐도 무방하다.
어떻게 쓰는거냐요?
인심한번 쓴다.. 만인의 예제 HelloWorld로 해보자..
다시 이야기 하지만, 난 c/c++에서 출발한 녀석이라서 c/c++/VC와 비교해 가면서 샘플을 작성하는 경우가 많을꺼다.. 자바도 해달라고? 미안하다 자바는 그냥 훑어보기만 해서.. 귀찮다..
#include <stdio.h> using System;
void main() public class HelloWorld
{ {
printf("Hello,\b World!\n"); public static void Main()
} {
Console.WriteLine("Hello,\b World!"};
}
}
어느게 C#소스인지는 구별할 수 있겠지...? 제발 모른다고 하지마라.. 화난다 그러면..
C소스가 짧다 ㅡㅡv
뭐 간단하다 Hello, World!찍으면서 중간에 삑소리 한번 경쾌하게 울려주는 소스다.. 소리가 안난다고? 스피커 확인해봐라..
나중에 다시 나올지 모르겠지만, 간단히 분석해 보자..
#include <stdio.h> / using System;
C는 나 이런 api 사용하겠소라고 선언해 놓은 헤더를 C#은 나 이런 클래스 라이브러리 사용하겠소라고 선언한거다. 여기에 선언 안되어 있는 녀석을 뜬금없이 사용하면 바로 컴파일러가 "뭥미?"하며 에러 날린다. C/C++에서는 printf()를 사용하기 위해, C#에서는 Console.WriteLine을 사용하기 위해 선언한 거다.
눈치 있는 사람이라면 두 소스에서 약간의 차이를 발견했을꺼다.. Hello,\b World!의 맨 마지막 \n의 유무다. printf의 경우 자동으로 줄을 넘겨주지 않기 때문에 \n을 붙혔다. 하지만, WrineLine은 그 이름에서 풍기는 것과 같이 한줄씩 써주는 녀석이라 자동으로 끝에 \n을 처리해 준다.
void main() -> 이거 int main(int argc, char* argv...) 뭐 이런식의 몇가지 형식이 있지만, 이름이 제일 중요하다.. 대소문자 구분하며, 어플을 시작할때 무조껀 이거 찾는다..(콘솔일때 말이다.. 윈도우일땐 좀 다른걸 찾지만, 그것도 아마 찾아보면 내부적으론 이거 찾을꺼다.) 크게 보면, C/C++어플은 이 main블럭 하나가 다란 소리다.. main이 끝나면 어플도 끝난다..
C#이라고 별수 없다.. 모양새가 이상한녀석 안쪽에 public static어쩌구하면서 숨어 있어서 그렇지, C#도 이 Main이 끝나면 끝난다.. 대/소문자 구분한다. C/C++에 비해 복잡해 보이는 이유는 C#은 객체 지향언어이기 때문이다. 많은 사람들이 C++이 객체지향이라고 생각하는데, C++은 객체지향을 구현할 수 있는 언어이지 객체지향언어는 아니다. 아무튼 여기선 static이란 녀석이 중요하다. Main의 형식은 고정적이다. 그냥 외워서 써도 되지만, 이번기회에 static의 특성중 하나를 알고 가자..
저번에 값타입이니, 참조 타입이니 그런 이야기를 한적이 있었다. 그 이야기 맨 마지막에 클래스는 참조 타입이라는 소리를 한적이 있다. 이게 뭔소리냐고? 인스턴스 생성없이 냅다 "길동아~'라고 부르면 바로 '뭥미?'라고 상큼하게 에러 날려준단 이야기다.
위 소스를 잘 봐라. 분명히 class 어쩌고 하는 블럭 내부에 Main이 떡하니 자리잡고 있다..
그런데, 왜 '뭥미?'의 상큼함이 안날라오는 걸까..? 그렇다 static때문이다.
이 static이란 녀석을 써주면 인스턴스 생성이전에 이미 메모리에 떡하니 자리잡고 있게된다. 깡패가 따로없는 것이다. 뭐 어렵게 생각하지 말자. static으로 해주면, new 그런 짓거리 필요없이 바로 사용가능하다고 보면 된다.