<CPP>/BASIC

2. 문장부호

CodeGrimie 2021. 1. 8. 11:04

쌍반점(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;
}