본문 바로가기

전체 보기225

Before Classic C++ : Bitwise Operators 비트 연산자 (Bitwise Operators) 개요비트 연산자는 정수형 데이터의 비트(bit) 단위로 직접 조작하는 연산을 수행합니다. 하드웨어 제어, 데이터 압축, 암호화 알고리즘 등 저수준 프로그래밍에서 효율적인 데이터 처리를 위해 사용됩니다. C++ 버전별 주요 키워드 도입 시기C99 이전 (C/C++): 모든 기본 비트 연산자(&, |, ^, ~, , >>)는 C 언어 초기부터 존재했으며, C++에서도 처음부터 지원되었습니다. 내용 설명& (Bitwise AND): 두 비트가 모두 1일 경우에만 결과 비트가 1이 됩니다.| (Bitwise OR): 두 비트 중 하나라도 1이면 결과 비트가 1이 됩니다.^ (Bitwise XOR): 두 비트가 서로 다를 경우에만 결과 비트가 1이 됩니다.~ (Bi.. 2025. 10. 29.
Before Classic C++ : Conditional Operator 조건 연산자 (?:) 개요조건 연산자(?:)는 C++에서 유일하게 세 개의 피연산자를 갖는 삼항 연산자(ternary operator)입니다. if-else 문을 간결하게 표현하는 데 사용됩니다. C++ 버전별 주요 키워드 도입 시기C99 이전 (C/C++): 조건 연산자는 C 언어 초기부터 존재했으며, C++에서도 처음부터 지원되었습니다. 내용 설명조건 ? 표현식1 : 표현식2의 형태로 사용됩니다.조건이 참(true)이면 표현식1이 평가되고, 그 결과가 전체 연산의 결과값이 됩니다.조건이 거짓(false)이면 표현식2가 평가되고, 그 결과가 전체 연산의 결과값이 됩니다. 예제 코드#include #include int main() { // 예제 1: x에 값 할당 // 5 > 2 조건이 참이.. 2025. 10. 28.
Before Classic C++ : enum enum 개요열거형(enum)은 서로 연관된 정수형 상수들의 집합에 의미 있는 이름을 부여하여 코드의 가독성과 유지보수성을 높이는 사용자 정의 타입입니다. C++ 버전별 주요 키워드 도입 시기C99 이전 (C/C++): 전통적인 enum은 C 언어 초기부터 존재했습니다.C++11: 타입 안전성을 강화하고 이름 충돌을 방지하는 enum class (또는 enum struct)가 도입되었습니다. 또한, 열거형의 기반이 되는 정수 타입을 명시적으로 지정할 수 있게 되었습니다. 내용 설명enum [열거명] { 상수명 [= 상수값], ... }; 형태로 선언합니다.상수 값을 지정하지 않으면 첫 번째 상수는 0으로 시작하며, 이후 상수들은 이전 값보다 1씩 큰 값을 자동으로 갖게 됩니다.전통적인 enum의 상수들은.. 2025. 10. 27.
Before Classic C++ : Comma Operator 04. 나열 연산자 (Comma Operator) 개요나열 연산자(,)는 여러 표현식을 왼쪽에서 오른쪽으로 순서대로 평가하는 연산자입니다. 전체 표현식의 결과값은 가장 오른쪽 표현식의 값이 됩니다. C++ 버전별 주요 키워드 도입 시기C99 이전 (C/C++): 쉼표 연산자는 C 언어 초기부터 존재했으며, C++에서도 처음부터 지원되었습니다. 내용 설명쉼표 연산자는 두 개의 피연산자를 가집니다. 왼쪽 피연산자를 먼저 평가하고, 그 결과를 버린 뒤 오른쪽 피연산자를 평가합니다. 전체 연산의 결과는 오른쪽 피연산자의 값과 타입이 됩니다. 주로 for 루프의 초기화나 증감 부분에서 여러 변수를 한 번에 처리할 때 사용됩니다. 예제 코드#include int main() { int i, j, k; /.. 2025. 10. 26.
Before Classic C++ : goto goto 개요goto는 프로그램의 실행 흐름을 지정된 레이블(label)로 무조건적으로 이동시키는 제어문입니다. C++ 버전별 주요 키워드 도입 시기C99 이전 (C/C++): goto는 C 언어 초기부터 존재했으며, C++에서도 처음부터 지원되었습니다. 내용 설명goto를 사용하면 코드의 특정 위치로 점프할 수 있습니다. 주로 다중 중첩 루프를 한 번에 빠져나가거나, 복잡한 에러 처리 로직을 단순화할 때 제한적으로 사용됩니다. 하지만 goto는 코드의 흐름을 예측하기 어렵게 만들어 가독성과 유지보수성을 해칠 수 있으므로 사용을 지양하는 것이 좋습니다. 예제 코드#include int main() { std::cout 실행 결과--- goto to exit nested loops ---i = 1,.. 2025. 10. 25.
Before Classic C++ : continue continue 개요continue는 반복문(for, while, do-while)의 현재 반복을 중단하고, 다음 반복을 시작하도록 제어를 옮기는 키워드입니다. C++ 버전별 주요 키워드 도입 시기C99 이전 (C/C++): continue는 C 언어 초기부터 존재했으며, C++에서도 처음부터 지원되었습니다. 내용 설명continue는 루프 본문의 나머지 부분을 건너뛰고, for문의 경우 증감식으로, while이나 do-while문의 경우 조건 검사 부분으로 바로 이동합니다. break가 루프를 완전히 탈출하는 것과 달리, continue는 루프를 계속 실행합니다. 예제 코드#include int main() { std::cout 실행 결과--- for loop with continue ---i .. 2025. 10. 24.
Before Classic C++ : break break 개요break는 switch 문이나 반복문(for, while, do-while)의 실행을 즉시 중단하고, 해당 블록을 빠져나갈 때 사용하는 제어문입니다. C++ 버전별 주요 키워드 도입 시기C99 이전 (C/C++): break는 C 언어 초기부터 존재했으며, C++에서도 처음부터 지원되었습니다. 내용 설명switch 블록 내의 특정 case를 처리한 후 전체 switch 문을 종료하거나, 반복문 내에서 특정 조건을 만족했을 때 더 이상 반복을 수행하지 않고 루프를 탈출하기 위해 사용됩니다. 예제 코드#include int main() { // for 문에서 break 사용 예제 std::cout 실행 결과--- for loop with break ---i = 1i = 2i = .. 2025. 10. 23.
Modern C++ : std::exception (98, 11) C++ 예외(Exception) 처리 개요C++ 예외 처리는 프로그램 실행 중에 발생하는 오류나 예외적인 상황(예: 0으로 나누기, 파일 열기 실패 등)을 처리하기 위한 강력하고 유연한 메커니즘입니다. 예외가 발생하면 일반적인 프로그램 흐름이 중단되고, 해당 예외를 처리할 수 있는 catch 블록으로 제어가 이동합니다. 이를 통해 오류 처리 코드를 기본 로직과 분리하여 코드의 가독성과 유지보수성을 높일 수 있습니다. C++ 버전별 주요 키워드 도입 시기C++98: try, catch, throw 키워드와 std::exception 클래스가 표준으로 도입되었습니다. 기본적인 예외 처리의 틀이 완성되었습니다.C++11: noexcept 지정자가 도입되었습니다. 함수가 예외를 발생시키지 않는다는 것을 명시적으.. 2025. 10. 22.
Modern C++ : std::async (11) std::async 개요std::async는 함수를 비동기적으로 실행하고 그 결과를 std::future 객체를 통해 얻을 수 있게 해주는 함수 템플릿입니다. std::thread와 달리 스레드 풀을 활용하여 스레드 생성 오버헤드를 줄일 수 있으며, 함수의 반환값을 쉽게 얻을 수 있는 장점이 있습니다. C++ 버전별 주요 키워드 도입 시기C++11 : std::async, std::future 도입 내용 설명std::async는 함수(또는 호출 가능한 객체)를 인자로 받아 비동기적으로 실행합니다. std::async는 std::future 객체를 반환하는데, 이 future 객체를 통해 비동기 작업의 결과를 얻거나 작업이 완료될 때까지 대기할 수 있습니다.std::async는 실행 정책(launch po.. 2025. 10. 21.