C++の定数とリテラル

こんにちは、未来のプログラマーたち!今日は、C++の定数とリテラルの世界に興味深い旅に出発します。これらの用語が少し脅威のように聞こえるかもしれませんが、このレッスンの終わりまでに、あなたはプロのようにこれらを使いこなすことができるようになるでしょう!さあ、始めましょう!

C++ Constants/Literals

定数とリテラルとは?

本題に入る前に、まず定数とリテラルとは何かを理解しましょう。これらはコードの中の「変更不可」な要素、例えば一週間の日数やπの値を思い浮かべてください。あなたのプログラムの中で何が起ころうとも、常に同じもの Remainする信頼できる友達です。

整数リテラル

まず、馴染みのあるものから始めましょう - 数字です!C++では、コードの中で直接整数を書くと、それを整数リテラルと呼びます。紙に数字を書くのと同じように、シンプルで明快です。

int myAge = 25;
int numberOfPlanets = 8;
int negativeNumber = -10;

これらの例では、25、8、-10は整数リテラルです。これらはただそこにあり、数字としての役割を果たしています。デシマルポイントや派手なものはありません。

しかし、まだ続きます!C++では、整数リテラルを異なる数体系で書くことができます:

int decimalNumber = 42;     // 10進数(基数10)
int octalNumber = 052;      // 8進数(基数8)- 0で始まる
int hexNumber = 0x2A;       // 16進数(基数16)- 0xで始まる
int binaryNumber = 0b101010;// 2進数(基数2)- 0bで始まる(C++14以降)

8進数、16進数、2進数が混乱するかもしれませんが、今はそれらが同じ数字を異なる方法で表現していることを知っておいてください。これは異なる言語で同じことを言うのと同じです - "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'に注意)です。

ボOLEANリテラル

BOOLEANリテラルは最もシンプルで、たった2つしかありません!

bool isAwesome = true;
bool isBoring = false;

それだけです!truefalseです。プログラミング世界の「はい」と「いいえ」と同じです。

文字リテラル

文字リテラルは、単一の文字を表し、シングルクォートで囲まれています。

char firstInitial = 'J';
char newline = '\n';
char tab = '\t';

最後の2つの例は特殊文字を示しています:'\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のすべての occurrencesを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で定義し、最大レベルとXP乗数をconstで定義し、プレイヤーの統計をさまざまなリテラルで初期化しています。

結論

おめでとうございます!あなたはC++の定数とリテラルの世界への第一歩を踏み出しました。これらは、あなたのプログラムを構築するための基盤、変更不可の値であり、素晴らしいものを作成するために使用されます。プログラミングの旅を続ける中で、毎日これらの概念を使うことになるでしょう。練習を続け、好奇心を持ち、楽しみながらプログラミングを続けてください!

リテラルの種類 説明
整数 42, -10, 0, 1000 整数
8進数 052, 077 基数8の数(0で始まる)
16進数 0x2A, 0xFF 基数16の数(0xで始まる)
2進数 0b101010 基数2の数(0bで始まる、C++14以降)
浮動小数点 3.14, 2.5f, 1e10 デシマルポイントを持つ数や科学記数法
BOOLEAN true, false 論理値
文字 'A', '\n', '\t' 単一の文字やエスケープシーケンス
文字列 "Hello", "C++" 文字のシーケンス

Credits: Image by storyset