C++定数とリテラル完全解説:型、構文、ベストプラクティス
定数とは、プログラムが変更できない固定値のことで、リテラルと呼ばれます。
定数は基本データ型のいずれでもよく、整数リテラル、浮動小数点リテラル、文字リテラル、文字列リテラル、ブールリテラルに分類できます。
再度になりますが、定数は通常の変数と同様に扱われますが、定義後に値を変更できません。
整数リテラル
整数リテラルは、10進数、8進数、16進数の定数にできます。プレフィックスで基数を指定します:16進数は 0x または 0X、8進数は 0、10進数はプレフィックスなし。
整数リテラルには、unsigned と long を表す U と L の組み合わせのサフィックスを付けることもできます。サフィックスは大文字小文字どちらでもよく、順序も任意です。
整数リテラルの例:
212 // 合法 215u // 合法 0xFeeL // 合法 078 // 違法: 8は8進数の桁ではない 032UU // 違法: サフィックスを繰り返せない
その他の整数リテラルの例:
85 // 10進数 0213 // 8進数 0x4b // 16進数 30 // int 30u // unsigned int 30l // long 30ul // unsigned long
浮動小数点リテラル
浮動小数点リテラルは、整数部、小数点、小数部、指数部を持ちます。10進数形式または指数形式で表現できます。
10進数形式を使用する場合、小数点、指数、または両方を含める必要があります。指数形式を使用する場合、整数部、小数部、または両方を含める必要があります。符号付き指数は e または E で導入されます。
浮動小数点リテラルの例:
3.14159 // 合法 314159E-5L // 合法 510E // 違法: 不完全な指数 210f // 違法: 小数点も指数もない .e55 // 違法: 整数部または小数部が欠けている
ブールリテラル
標準C++キーワードの一部として2つのブールリテラルがあります:
true を表す true の値
false を表す false の値
true の値を 1 と、false の値を 0 と見なすべきではありません。
文字リテラル
文字リテラルは一重引用符で囲みます。リテラルが L(大文字のみ)で始まる場合、ワイド文字リテラル(例:L'x')であり、wchar_t 型の変数に格納する必要があります。それ以外の場合、狭い文字リテラル(例:'x')であり、単純な char 型の変数に格納できます。
文字リテラルは、普通の文字(例:'x')、エスケープシーケンス(例:'\t')、ユニバーサル文字(例:'\u02C0')のいずれかです。
C++には、バックスラッシュを前に付けると特別な意味を持つ文字があり、改行(\n)やタブ(\t)などを表すために使用されます。主なエスケープシーケンス:
| エスケープシーケンス | 意味 |
|---|---|
| \\ | \ 文字 |
| \' | ' 文字 |
| \" | " 文字 |
| \? | ? 文字 |
| \a | アラート/ベル |
| \b | バックスペース |
| \f | フォームフィード |
| \n | 改行 |
| \r | キャリッジリターン |
| \t | 水平タブ |
| \v | 垂直タブ |
| \ooo | 1〜3桁の8進数 |
| \xhh... | 1桁以上の16進数 |
いくつかのエスケープシーケンス文字を示す例:
Live Demo#include <iostream>
using namespace std;
int main() {
cout << "Hello\tWorld\n\n";
return 0;
}
上記コードをコンパイルして実行すると、以下の結果が得られます:
Hello World
文字列リテラル
文字列リテラルは二重引用符で囲みます。文字列には、文字リテラルと同様に、普通の文字、エスケープシーケンス、ユニバーサル文字が含まれます。
長い行を文字列リテラルを使って複数行に分割し、ホワイトスペースで区切ることができます。
文字列リテラルの例。以下の3形式は同一の文字列です:
"hello, dear" "hello, \ dear" "hello, " "d" "ear"
定数の定義
C++で定数を定義するには、以下の2つの簡単な方法があります:
#define プリプロセッサを使用する
const キーワードを使用する
#define プリプロセッサ
#define プリプロセッサで定数を定義する形式:
#define identifier value
詳細な例:
Live Demo#include <iostream>
using namespace std;
#define LENGTH 10
#define WIDTH 5
#define NEWLINE '\n'
int main() {
int area;
area = LENGTH * WIDTH;
cout << area;
cout << NEWLINE;
return 0;
}
上記コードをコンパイルして実行すると、以下の結果が得られます:
50
const キーワード
const 接頭辞を使って、特定の型を持つ定数を宣言できます:
const type variable = value;
詳細な例:
Live Demo#include <iostream>
using namespace std;
int main() {
const int LENGTH = 10;
const int WIDTH = 5;
const char NEWLINE = '\n';
int area;
area = LENGTH * WIDTH;
cout << area;
cout << NEWLINE;
return 0;
}
上記コードをコンパイルして実行すると、以下の結果が得られます:
50
定数は大文字で定義するのが良いプログラミング習慣です。
C言語
- C++変数・リテラル・定数完全ガイド:基礎から実践まで
- C++データ型完全ガイド:基本型、修飾子、ベストプラクティス
- C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
- C++コメント完全ガイド:読みやすく保守しやすいコードのためのベストプラクティス
- C++クラステンプレート完全ガイド:実践的なジェネリックプログラミング
- C言語変数・定数・リテラル完全ガイド
- C言語の定数とリテラル:型、使い方、ベストプラクティス
- C++プログラミング言語:概要と主要機能
- C++定数とリテラル完全解説:型、構文、ベストプラクティス
- C++演算子完全ガイド:種類、使い方、ベストプラクティス
- Python 変数・定数・リテラル: 包括的ガイド