C++ 상수/리터럴
안녕하세요, 미래의 프로그래머 여러분! 오늘 우리는 C++ 상수와 리터럴의 세계로 흥미로운 여정을 떠납니다. 이 용어들이 조금 두려울 수 있지만, 이 수업이 끝나면 당신은 이들을 마스터하듯이 사용할 수 있을 것입니다! 시작해보겠습니다!
상수와 리터럴이란?
자, 구체적인 내용을 알기 전에 상수와 리터럴이 무엇인지 이해해보겠습니다. 이들은 코드에서 "바뀌지 않는" 요소들입니다. 예를 들어, 일주일의 일수나 pi의 값과 같은 것들입니다. 이들은 당신의 프로그램에서 무엇이 일어나든 항상 같은 값을 유지하는 신뢰할 수 있는 친구들입니다.
정수 리터럴
먼저 익숙한 것부터 시작해보겠습니다 - 숫자들! C++에서 우리가 코드에 직접 전체 숫자를 작성할 때, 그것을 정수 리터럴이라고 부릅니다. 이는 종이에 숫자를 적는 것처럼 간단하고 명확합니다.
int myAge = 25;
int numberOfPlanets = 8;
int negativeNumber = -10;
이 예제에서, 25, 8, 그리고 -10은 정수 리터럴입니다. 이들은 단순히 숫자로만 존재하며, 소수점이나 복잡한 요소 없이 그냥 있어 있습니다.
하지만 기다리세요, 더 있습니다! C++는 우리가 다양한 수��에서 정수 리터럴을 작성할 수 있도록 허용합니다:
int decimalNumber = 42; // 십진수 (기수 10)
int octalNumber = 052; // 팔진수 (기수 8) - 0으로 시작
int hexNumber = 0x2A; // 십陆진수 (기수 16) - 0x로 시작
int binaryNumber = 0b101010;// 이진수 (기수 2) - 0b로 시작 (C++14 이후)
팔진수, 십陆진수, 또는 이진수가 혼란스러울 수 있지만, 이들은 같은 숫자를 다른 방법으로 표현하는 것입니다. 이는 다른 언어로 말하는 것과 같습니다 - "forty-two", "cuarenta y dos", 그리고 "quarante-deux"는 모두 같은 것을 의미합니다!
부동소수점 리터럴
이제 소수점을 추가해보겠습니다! 부동소수점 리터럴은 소수점이 있는 숫자나 과학 표기법으로 표현된 숫자입니다.
float pi = 3.14159f;
double avogadroNumber = 6.022e23;
long double veryPreciseNumber = 1.23456789L;
여기서, 3.14159f는 float 리터럴 (끝에 'f'가 있음), 6.022e23은 double 리터럴 (과학 표기법), 그리고 1.23456789L은 long double 리터럴 (끝에 'L'이 있음)입니다.
부울 리터럴
부울 리터럴은 가장 간단한 것 중 하나입니다 - 두 가지 밖에 없습니다!
bool isAwesome = true;
bool isBoring = false;
이것이 전부입니다! true
와 false
입니다. 이는 프로그래밍 세계의 "예"와 "아니요"입니다.
문자 리터럴
문자 리터럴은 단일 문자를 나타내며, 단일 따옴표로 둘러싸입니다.
char firstInitial = 'J';
char newline = '\n';
char tab = '\t';
마지막 두 예제는 특수 문자를 보여줍니다: '\n'은 새 줄을 의미하고, '\t'은 탭을 의미합니다. 이들은 이스케이프 시퀀스라고 불립니다.
문자열 리터럴
문자열 리터럴은 따옴표로 둘러싸인 문자序列입니다.
std::string greeting = "Hello, World!";
std::string quote = "To be, or not to be, that is the question.";
문자열은 이중 따옴표를 사용하며, 단일 문자는 단일 따옴표를 사용합니다!
상수 정의
이제 리터럴에 대해 알고 보니, 이를 사용하여 프로그램 전체에서 변하지 않는 값을 만드는 방법을 살펴보겠습니다.
#define 전처리기
상수를 정의하는 한 방법은 #define 전처리기 지시자를 사용하는 것입니다:
#define PI 3.14159
#define MAX_STUDENTS 30
// 사용 예
double circleArea = PI * radius * radius;
if (numberOfStudents > MAX_STUDENTS) {
std::cout << "Class is full!";
}
define 지시자는 컴파일러가 코드를 컴파일하기 전에 PI를 3.14159로, MAX_STUDENTS를 30으로 변경하도록 지시합니다.
const 키워드
보다 현대적이고 선호되는 방법은 const 키워드를 사용하는 것입니다:
const double PI = 3.14159;
const int MAX_STUDENTS = 30;
// 사용 방법은 #define과 동일
const 키워드는 컴파일러에게 이 변수들이 초기화된 후 변경될 수 없음을 알립니다.
모든 것을 통합해보자
이제 다양한 상수와 리터럴을 사용하는 작은 프로그램을 종합해보겠습니다:
#include <iostream>
#include <string>
#define GAME_NAME "C++ Adventure"
int main() {
const int MAX_LEVEL = 100;
const double XP_MULTIPLIER = 1.5;
int currentLevel = 1;
double currentXP = 0.0;
bool hasCompletedTutorial = false;
char playerRank = 'D';
std::string playerName = "Newbie";
std::cout << "Welcome to " << GAME_NAME << "!" << std::endl;
std::cout << "Player: " << playerName << std::endl;
std::cout << "Level: " << currentLevel << "/" << MAX_LEVEL << std::endl;
std::cout << "XP: " << currentXP << std::endl;
std::cout << "Rank: " << playerRank << std::endl;
std::cout << "Tutorial completed: " << (hasCompletedTutorial ? "Yes" : "No") << std::endl;
return 0;
}
이 프로그램은 우리가 논의한 모든 유형의 상수와 리터럴을 사용합니다. #define을 사용하여 게임 이름을 정의하고, const를 사용하여 최대 레벨과 경험치 배율을 정의하며, 여러 리터럴을 사용하여 플레이어의 통계를 초기화합니다.
결론
축하합니다! 당신은 C++ 상수와 리터럴의 세계로 첫 걸음을 뗐습니다. 기억하세요, 이들은 당신의 프로그램을 만들기 위한 기본 블록 - 변하지 않는 값을 사용하여 놀라운 것들을 만드는 것입니다. 프로그래밍 여정을 계속하면서, 매일 이 개념들을 사용하게 될 것입니다. 연습을 계속하고, 호기심을 유지하며, 행복하게 코딩하세요!
리터럴 유형 | 예시 | 설명 |
---|---|---|
정수 | 42, -10, 0, 1000 | 전체 숫자 |
팔진수 | 052, 077 | 기수 8의 숫자 (0으로 시작) |
십陆진수 | 0x2A, 0xFF | 기수 16의 숫자 (0x로 시작) |
이진수 | 0b101010 | 기수 2의 숫자 (0b로 시작, C++14 이후) |
부동소수점 | 3.14, 2.5f, 1e10 | 소수점이 있는 숫자나 과학 표기법 |
부울 | true, false | 논리 값 |
문자 | 'A', '\n', '\t' | 단일 문자나 이스케이프 시퀀스 |
문자열 | "Hello", "C++" | 문자序列 |
Credits: Image by storyset