10. C++ 식과 문(statement vs expression)

1. 개요

1.1 문서 개요

이 문서는 C++ 프로그래밍에서 **식(Expression)**과 **문(Statement)**의 개념을 정리합니다. 식과 문은 모든 C++ 코드의 기본 구성 요소로, 프로그램의 논리 구조와 실행 흐름을 정의하는 데 사용됩니다.
C++을 포함한 대부분의 프로그래밍 언어에서 식은 값을 생성하는 구조, 문은 행동을 수행하는 구조로 구분됩니다. 본 문서는 이 둘의 차이점, 사용 사례, 그리고 언어 설계에서의 위치를 구조적으로 설명합니다.

2. 내용

2.1 식(Expression)

2.1.1 식의 정의

식(Expression)은 **값을 계산하거나 평가(evaluate)**하는 코드 조각입니다. 식은 항상 어떤 값을 반환합니다.

예를 들어, 다음은 모두 식입니다:

  • 3 + 4
  • x * y
  • a = b + c
  • func(10)

2.1.2 식의 유형

2.1.2.1 산술 식

값들 사이의 산술 연산을 수행하여 결과를 계산합니다.

예시:

int x = 5 + 3; // '5 + 3'은 식이며, 그 결과가 8로 평가됩니다.
2.1.2.2 관계 식

두 값의 관계를 비교하여 논리 값을 반환합니다.

예시:

bool isEqual = (a == b); // 'a == b'는 식이며, true 또는 false로 평가됩니다.
2.1.2.3 논리 식

논리 연산자를 사용하여 참/거짓 값을 계산합니다.

예시:

bool result = (x > 0 && y < 10); // 전체 조건식이 평가되어 true 또는 false를 반환합니다.
2.1.2.4 할당 식

변수에 값을 할당하는 식도 값으로 평가됩니다. 이는 C++에서 할당문도 식이라는 점에서 특징적입니다.

int a;
int b;
a = b = 3; // b = 3이 먼저 평가되어 3을 반환하고, 그 결과가 a에 할당됨

2.2 문(Statement)

2.2.1 문의 정의

문(Statement)은 프로그램에서 어떤 동작을 수행하는 완전한 명령입니다. 문은 값을 반환하지 않을 수 있으며, 하나 이상의 식을 포함할 수 있습니다.

예시:

int x = 10; // 선언 및 초기화 문
if (x > 5) {  // 조건문 (제어 흐름 문)
    x = x - 1; // 할당문
}

2.2.2 문과 식의 관계

모든 문이 식을 포함할 수 있으나, 모든 식이 문이 되는 것은 아닙니다. 단독으로 사용된 식에 세미콜론(;)을 붙이면 **식 문(expression statement)**이 됩니다.

예시:

a + b; // 이 자체는 식 문이지만, 값은 사용되지 않음

2.2.3 주요 문 유형

2.2.3.1 선언문(Declaration Statement)

변수나 함수, 클래스 등을 선언하는 문입니다.

int count;
2.2.3.2 식문(Expression Statement)

단일 식으로 구성되며, 끝에 세미콜론이 붙은 형태입니다.

x = x + 1;
2.2.3.3 제어문(Control Statement)

조건문, 반복문, 분기문 등 흐름 제어를 위한 문입니다.

if (x > 0) {...}
while (true) {...}
switch (option) {...}
2.2.3.4 복합문(Compound Statement)

여러 문을 중괄호 {}로 묶어 하나의 블록으로 구성하는 문입니다.

{
    int a = 1;
    int b = 2;
}

2.3 식과 문 구분의 실질적 의의

C++에서는 문이 프로그램 실행 흐름을 구성하고, 식이 데이터 흐름을 구성합니다.
식은 값을 중심으로 동작하고, 문은 제어 흐름과 구조를 중심으로 동작합니다.

또한, C++은 식을 문처럼 사용할 수 있는 유연한 문법을 허용하므로, 다음과 같은 패턴이 가능해집니다:

while ((line = readLine()) != "") {
    process(line);
}

이 예시에서 (line = readLine()) != ""은 하나의 복합 식이며, 그 자체가 while 문의 조건으로 사용됩니다.

3. 마무리

C++에서 식과 문은 프로그램의 기본 단위로, 각각 값과 동작이라는 측면에서 서로 다른 역할을 수행합니다.
식은 평가되어 값을 생성하고, 문은 프로그램의 실행 구조와 흐름을 구성합니다.
두 개념은 명확히 구분되면서도 C++의 문법 구조 안에서 유기적으로 결합되어 동작하며, 프로그래머가 다양한 방식으로 코드를 구성할 수 있도록 합니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

error: Content is protected !!
위로 스크롤