2. 문장부호
쌍반점(semi-colon)
▼ CPP에서 쌍반점 예시
int main()
{
return 0;
}
쌍반점(;)은 C의 문장부호 중에서도 우리나라 국어에서 유난히 잘 사용되지 않는다.
반면 영문법에서는 자주 사용되는 문장부호로 사용용도를 이해하면 C 문법을 이해하는데 큰 도움이 된다.
기본적으로 우리가 자주 쓰는 마침표(.)는 말 그대로 문장이 끝난다는 의미를 가진다.
이건 영어권 국가에서도 동일한 의미로 가지는데 받아들이는 사고방식이 조금 다르다.
우리나라에서는 문법적으로 한 문장이 딱 끝나면 마침표를 찍는다.
▼ 한국어에서 마침표(.) 예시
인간은 선택한다. 노예는 복종한다. |
반면 영어권에서는 같은 맥락의 문장이 끝나야 한 문장이 끝났다고 생각한다.
▼ 영어에서 마침표(.) 예시
A man chooses; A slave obeys. |
그래서 우리나라에서는 쌍반점(;)의 경우 and로 동일시하여 번역하는 경우가 많다.
위의 예시만 봐도 "인간은 선택하고, 노예는 복종한다."가 문맥상으로도 자연스럽다.
이러한 쌍반점(;)의 문법과 앞서서 알아봤던 중괄호({})의 문법이 어우러져서 C의 기본적인 코드 문법이 완성되었다는 것을 이해할 수 있다.
▼ 실제 CPP에서 쌍반점(;) 해석
int main()
{
int a; // Here is the integer a;
a = 3; // a has 3;
return 0;
} // .
Main 함수가 끝나고 주석으로 표시된 마침표(.)가 보인다.
C 문법에서는 함수가 끝나는 것이 같은 맥락의 코드가 끝난 것으로 간주하기 때문에 마침표(.) 대신 중괄호를 닫는 것으로 대신한다.
그래서 원래 C 문법에서는 문장들을 내려서 정리하지 않아도 컴파일에 문제가 없다.
▼ 실제 CPP에서 영문법 방식으로 코드 작성 예시
int main() { int a; a = 3; return 0; }
짧은 코드의 경우엔 이게 훨씬 더 가독성은 좋지만 너무 남용하지는 말자.
문장이 길어질수록 좌-> 우 코드의 흐름을 이해하기 불편해지기 때문에 줄 바꿈을 통해서 흐름을 위-> 아래로 정리하는 것이다. 우리가 사용하는 마우스 휠 역시 위-> 아래라는 것을 잊지 말자.
따옴표(quotes)
▼ 실제 CPP에서 C 방식 코드 따옴표('')와 큰따옴표("") 예시
int main()
{
char c = 'A';
char *str = "BCD";
return 0;
}
▼ 실제 CPP에서 CPP 방식 코드 큰따옴표("") 예시
#include <string>
int main()
{
std::string c = "A";
std::string str = "BCD";
return 0;
}
예시가 두 개인 것이 조금 의아할 수 있다.
기본적으로 CPP에서는 String을 사용해서 문자열을 처리하기를 권장한다.
그래서 큰따옴표("")만 사용하게 되지만 여전히 세상의 많은 레거시 코드가 C로 작성되어 있어서 CPP 개발자들도 C 방식 코드를 작성하곤 한다.
그러니 CPP 개발자라면 두 경우를 모두 이해하고 있는 편이 좋다.
문법적으로 볼 때 따옴표는 우리나라 국어문법에서도 자주 사용하기 때문에 낯설지 않다.
우리가 소설에서 자주 보는 큰따옴표의 역할을 생각해보자.
▼ 소설에서 큰따옴표("") 예시
코드그리미는 외쳤다. "세상에서 제일 맛있는 초코파이는 군대 훈련소 첫 종교행사에서 먹은 초코파이!" |
C에서도 거의 비슷한 모습으로 사용되지만 의미는 약간 다르다.
소설처럼 한 글자 이상의 문자와 문자열을 표현하기 위한 방법으로 사용한다.
따옴표('')는 하나의 문자를 표현할 때 사용하고 큰따옴표("")는 하나 이상의 문자를 표현할 때 사용한다.
그래서 사실 C에서도 아래의 코드처럼 큰따옴표("")만 사용해도 큰 무리는 없다.
▼ 실제 CPP에서 큰따옴표("")만 사용한 예시
int main()
{
char c = "A";
char *str = "BCD";
return 0;
}