const 変数と constexpr 変数の違い
C では、キーワード const と constexpr は両方とも定数を定義するために使用されます。ただし、この 2 つには、適用方法とコードの動作への影響という点で微妙な違いがあります。
定義:
- const: を宣言します。初期化後に変更できない定数変数。コンパイル時または実行時に初期化できます。
- constexpr: コンパイル時に評価される定数式で初期化する必要があるコンパイル時定数変数を宣言します。
使用法:
-
PI1 (const): コンパイル時または実行時に初期化でき、その後は変更できません。
-
PI2 (constexpr): コンパイル時に定数式を使用して初期化する必要があります。そして変更することはできません。これは、コンパイル時定数を必要とするコンテキストで使用できます。
例:
次の定義を検討してください:
const double PI1 = 3.141592653589793;
constexpr double PI2 = 3.141592653589793;
-
PI1: const が使用されるコンテキストで使用できます。変数は必須ですが、コンパイル時定数を必要とするコンテキストでは使用できません。
-
PI2: const 定数とコンパイル時定数の両方が必要なコンテキストで使用できます。
C 11 での好ましい使用法:
C 11 で推奨されるスタイルは、アプリケーションの特定の要件によって異なります。
- 実行時に初期化でき、コンパイル時の定数を必要とするコンテキストで使用する必要のない定数変数が必要な場合、const を使用します。
- 定数式で初期化する必要があり、コンパイル時定数を必要とするコンテキストで使用できるコンパイル時定数が必要な場合は、次を使用します。 constexpr.
以上がC の `const` 変数と `constexpr` 変数の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。