스트림 조작자(Stream Manipulator)는 스트림 객체에서 삽입 연산자(<<)와 추출 연산자(>>)와 함께 사용하도록 특별히 설계된 함수입니다.std::cout << std::setw(10);조작자 역시 일반적인 함수이므로, 스트림 객체를 인수로 전달하여 다른 함수처럼 직접 호출할 수도 있습니다.boolalpha(cout);조작자는 주로 스트림의 서식(formatting) 설정을 변경하거나, 줄바꿈 같은 특수 문자를 삽입·추출할 때 사용됩니다. 대표적인 C++ 조작자들을 하나씩 살펴보겠습니다
C++ 프로그래밍에서는 두 변수에 저장된 값을 특정 연산자를 사용해 비교하여 두 값 사이의 관계를 판단할 수 있습니다. 이렇게 값들의 관계를 확인하는 데 사용되는 연산자를 관계 연산자(relational operators)라고 부릅니다.C++에서 사용할 수 있는 주요 관계 연산자는 다음과 같습니다.연산자설명>보다 큼 (초과)>=크거나 같음 (이상)==같음!=같지 않음<=작거나 같음 (이하)<보다 작음 (미만)관계 연산자의 활용관계 연산자는 피연산자 간의 관계를 검사할 때 사용합니다. 비교 결과는 참(true)
C++의 조건부 연산자(? :)는 세 개의 피연산자를 필요로 하는 삼항 연산자입니다. if-else 문을 한 줄로 간결하게 표현할 수 있어 실무에서 널리 활용됩니다.조건부 연산자의 동작 방식첫 번째 피연산자는 암묵적으로 bool 타입으로 변환됩니다. 평가가 이루어지며, 모든 부수 효과(side effect)는 다음 단계로 진행되기 전에 완료됩니다.첫 번째 피연산자가 true(1)로 평가되면 두 번째 피연산자가 평가됩니다.첫 번째 피연산자가 false(0)로 평가되면 세 번째 피연산자가 평가됩니다.조건부 연산자의 결과값은 실제로 평가
형변환(type cast)은 특정 상황에서 객체의 타입을 명시적으로 변환할 수 있는 방법을 제공합니다. 형변환은 단항 표현식 형태로 다음과 같이 사용할 수 있습니다.( type-name ) cast-expression형변환이 수행되면 컴파일러는 cast-expression을 type-name 타입으로 취급합니다. 캐스트는 모든 스칼라(scalar) 타입의 객체를 다른 스칼라 타입으로 변환하거나, 그 반대로 변환할 때 사용됩니다. 명시적 형변환은 암시적 변환(implicit conversion)의 효과를 결정하는 것과 동일한 규칙의
C++ 프로그래밍 언어에서 세미콜론(;)은 단순히 줄을 구분하는 기호가 아니라, 문법 구조를 완성하는 핵심 구두점(punctuator)입니다. ISO C++ 표준에서의 세미콜론 ISO C++ 표준에 따르면, C++ 프로그램의 어휘적 표현(lexical representation)에는 전처리기(preprocessor)의 문법에 직접 사용되거나, 연산자(operator)와 구두점(punctuator) 토큰으로 변환되는 여러 가지 전처리 토큰(preprocessing tokens)이 포함됩니다. 그중에서 세미콜론은 C++에서 공식적으로
C++ 관계 연산자란? C++ 프로그래밍에서는 두 변수에 저장된 값을 비교하여 그 값들 사이의 관계를 판단할 수 있습니다. 이때 사용되는 연산자를 관계 연산자(relational operator)라고 부르며, 비교 결과는 참(true) 또는 거짓(false)으로 반환됩니다. C++에서 사용할 수 있는 주요 관계 연산자는 다음과 같습니다. 연산자설명 >크다 (greater than) >=크거나 같다 (greater than or equal to) <=작거나 같다 (less than or equal to) <
C++ 프로그램 구조, Hello World부터 시작하세요프로그래밍 언어를 배우는 가장 좋은 방법은 직접 프로그램을 작성해 보는 것입니다. 초보자가 처음 작성하는 프로그램은 대부분 Hello World라는 프로그램으로, 화면에 Hello World라는 문장을 출력하는 아주 간단한 코드입니다. 하지만 이 짧은 프로그램 안에는 C++ 프로그램이 갖추어야 할 모든 핵심 요소가 담겨 있습니다.먼저 전체 코드를 살펴보겠습니다.#include<iostream>int main() { std::
C++에서 문자열을 비교하는 방법은 크게 두 가지가 있습니다. 바로 관계 연산자(==)와 std::string::compare() 함수입니다. 흥미롭게도 이 둘 사이에는 단 하나의 차이점만 있는데, 그것은 바로 반환 값입니다. 내부적으로 string::operator==()는 string::compare()를 이용해 구현되어 있기 때문입니다. 관계 연산자(==)는 두 문자열이 같은지 여부만 알려주는 불리언(bool) 값을 반환합니다. 반면 compare()는 두 문자열이 서로 어떤 관계에 있는지를 나타내는 정수(int)를 반환합니
개요C++ 프로그램을 세미콜론(;) 없이 작성하는 방법은 여러 가지가 있습니다. 다만 이러한 기법은 매우 나쁜 코딩 습관에 해당하며, 실제 프로덕션 코드에서는 절대 사용해서는 안 됩니다. 여기서 소개하는 내용은 순수하게 정보 제공 목적임을 미리 밝힙니다.if 문을 활용한 방법가장 쉬운 방법은 if 문을 이용하는 것입니다. C++에서 거의 모든 문장(statement)은 표현식(expression)으로 취급될 수 있습니다. 따라서 해당 문장을 빈 괄호 쌍을 가진 if 문 안에 넣으면, 더 이상 세미콜론으로 끝낼 필요가 없습니다. 예를
C++에서 sizeof()가 연산자로 구현되는 이유많은 개발자들이 sizeof를 함수처럼 착각하지만, 사실 C++에서 sizeof는 단항 연산자(unary operator)입니다. 겉보기에는 sizeof(int)처럼 함수 호출과 똑같이 생겼지만, 실제로는 인수의 크기에 해당하는 상숫값을 코드에 삽입하는 특수한 문법일 뿐입니다.sizeof의 가장 큰 특징은 컴파일 타임에 값이 결정된다는 점입니다. 프로그램 실행 중에 별도의 연산을 수행할 필요가 없으므로 런타임 지원이 전혀 필요하지 않습니다.sizeof를 오버로딩할 수 없는 이유siz
C++에서 닫는 중괄호 뒤 세미콜론이 필수인 경우닫는 중괄호(}) 뒤에 세미콜론이 반드시 필요한 경우는, 해당 중괄호가 선언(declaration)의 끝을 나타낼 때입니다. C++에서는 클래스(class), 구조체(struct), 공용체(union), 열거형(enum) 선언 그리고 초기화(initialization) 문법에서 중괄호가 사용되며, 이러한 선언문의 끝에는 반드시 세미콜론을 붙여야 합니다.세미콜론이 필요한 예시class X {}; // struct, union도 동일하게 적용됨 enum Y {}; int z[] =
C++에서 등호 연산자(equality operators)는 두 값이 서로 같은지 비교하는 연산자로, 같음을 의미하는 ==(equal to)와 같지 않음을 의미하는 !=(not equal to)가 있습니다. 이름 그대로 두 피연산자가 같은 값인지 아닌지를 판별하는 역할을 수행합니다.등호 연산자는 이항(binary) 연산자로, 좌우에 위치한 두 피연산자를 엄격하게 비교하여 그 결과를 반환합니다. 관계 연산자(relational operators)보다 우선순위는 낮지만 동작 방식은 매우 유사하며, 연산 결과의 자료형은 항상 bool입니
C++에서 ::(범위 지정 연산자, scope resolution operator)는 변수 스코프(유효 범위)에 의해 가려진 이름, 즉 숨겨진 이름에 접근하기 위해 사용됩니다. 이 연산자는 단항(unary)과 이항(binary) 두 가지 형태로 모두 사용할 수 있습니다.단항 범위 지정 연산자는 블록(block)이나 클래스 내부에서 동일한 이름의 선언으로 인해 네임스페이스 스코프 또는 전역 스코프의 이름이 가려졌을 때 사용합니다. 예를 들어, 전역 변수 my_var와 지역 변수 my_var가 동시에 존재한다면, 전역 변수에 접근하려면
C++에서 ::(범위 확인 연산자, scope resolution operator)는 변수 스코프(유효 범위)로 인해 가려진 이름에 다시 접근할 수 있게 해주는 연산자입니다. 이 연산자는 단항(unary)과 이항(binary) 형태로 모두 사용할 수 있습니다.전역 변수에 접근하기블록이나 클래스 내부에서 같은 이름의 선언이 네임스페이스 스코프 또는 전역 스코프의 이름을 가리고 있을 때, 단일 범위 확인 연산자를 사용해 원래 이름에 접근할 수 있습니다. 예를 들어, 전역 변수 my_var와 지역 변수 my_var가 동시에 존재하는 경우
범위 지정 연산자란?C++에서 ::(범위 지정 연산자, Scope Resolution Operator)는 변수 스코프로 인해 가려진(hidden) 이름에 다시 접근할 수 있도록 도와주는 연산자입니다. 같은 이름의 변수가 서로 다른 스코프에 존재할 때, 특정 스코프의 이름을 명확하게 지정해야 하는 상황에서 필수적으로 사용됩니다.이 연산자는 크게 단항(unary) 형태와 이항(binary) 형태, 두 가지 방식으로 활용할 수 있습니다.1. 단항 범위 지정 연산자 — 전역 변수 접근하기블록이나 클래스 내부에서 같은 이름으로 변수를 선언하
C++ 키워드란 무엇인가?키워드(keyword)는 컴파일러가 그 의미를 이미 정의해 놓은 특수한 단어를 말합니다. 따라서 이러한 키워드는 프로그래머가 변수명이나 함수명 등의 식별자(identifier)로 사용할 수 없습니다. 키워드는 예약어(reserved word)와 사전 정의 식별자(predefined identifier)의 집합으로 구성됩니다.여기서 사전 정의 식별자란 컴파일러에 의해 의미가 정의되어 있지만, 사용자가 그 의미를 변경할 수 있는 식별자를 의미합니다. 반면 예약어는 절대 다른 용도로 사용할 수 없습니다.예약어와
C++ 연산자 우선순위란?연산자 우선순위(precedence)는 하나의 표현식 안에서 항들이 어떻게 묶이는지를 결정하는 규칙입니다. 반면 결합성(associativity)은 괄호가 없을 때 동일한 우선순위를 가진 연산자들이 어느 방향부터 그룹화되어 평가되는지를 정하는 속성입니다. 이 두 가지 규칙은 표현식이 실제로 어떤 순서로 계산되는지에 직접적인 영향을 미칩니다.모든 연산자가 같은 우선순위를 갖는 것은 아닙니다. 예를 들어 곱셈 연산자(*)는 덧셈 연산자(+)보다 높은 우선순위를 가집니다.예제로 이해하기x = 7 + 3 * 2;위
삼중자(Trigraph)란 무엇인가?C와 C++ 문법에서 사용되는 일부 특수 문자는 ISO-646 문자 집합에 포함되어 있지 않습니다. 과거에는 일부 시스템의 키보드나 디스플레이가 이러한 문자를 입력하거나 출력하지 못하는 경우가 있었는데, 이를 해결하기 위해 세 글자로 구성된 대체 시퀀스인 삼중자(trigraph)가 고안되었습니다.컴파일러는 다른 어떤 처리보다도 먼저 소스 코드에서 아래 표와 같은 세 문자 시퀀스("삼중자 시퀀스")를 발견하면, 해당 시퀀스를 하나의 단일 문자로 치환합니다.삼중자치환 결과삼중자치환
C++ 프렌드(Friend)란 무엇인가?클래스의 프렌드 함수(friend function)는 해당 클래스의 범위(scope) 외부에서 정의되지만, 클래스의 모든 private 멤버와 protected 멤버에 접근할 수 있는 특별한 권한을 지닌 함수입니다. 프렌드 함수의 원형(prototype)이 클래스 정의 내부에 선언되긴 하지만, 프렌드 함수 자체는 그 클래스의 멤버 함수가 아니라는 점에 유의해야 합니다.프렌드는 일반 함수, 함수 템플릿, 멤버 함수가 될 수 있으며, 클래스나 클래스 템플릿도 프렌드로 지정할 수 있습니다. 어떤 클
예약어(Reserved Word)란 무엇인가?예약어(reserved word)는 변수명, 함수명, 레이블처럼 식별자(identifier)로 사용할 수 없는 단어를 말합니다. 즉, 언어 차원에서 사용이 예약되어 있는 단어입니다. 이는 구문론적(syntactic) 정의이며, 일부 예약어는 실제로 특별한 의미를 갖지 않는 경우도 있습니다.C++에서는 다음과 같이 작성하면 컴파일 오류가 발생합니다.int while = 10; // 오류! while은 예약어이므로 변수 이름으로 사용 불가C++ 예약어의 개수와 분류C++에는 총 95개의