定数は、整数定数、浮動小数点定数、文字定数、文字列リテラルなどの基本データ型のいずれかにすることができます。 列挙定数もあります。
定数は、定義後に値を変更できないという点を除いて、通常の変数と同様に扱われます。
整数リテラル
整数リテラルは、10進数、8進数、または16進定数です。 接頭辞は、16進数の場合は0xまたは0X、8進数の場合は0、小数の場合は0になります。
整数リテラルは、それぞれunsignedとlongに対して、UとLの組み合わせである接尾辞を持つこともできます。 接尾辞は大文字または小文字で、任意の順序で指定できます。
整数リテラルのいくつかの例を以下に示します。
212 /* Legal */ 215u /* Legal */ 0xFeeL /* Legal */ 078 /* Illegal: 8 is not an octal digit */ 032UU /* Illegal: cannot repeat a suffix */
以下は、さまざまな種類の整数リテラルの他の例です。
85 /* decimal */ 0213 /* octal */ 0x4b /* hexadecimal */ 30 /* int */ 30u /* unsigned int */ 30l /* long */ 30ul /* unsigned long */
浮動小数点リテラル
浮動小数点リテラルは、整数部、小数点、小数部、および指数部を持ちます。 浮動小数点リテラルは小数点または指数形式で表すことができます。
小数点形式を表すときは、小数点、指数、またはその両方を含める必要があります。 指数関数形式を表す一方、整数部分、小数部分、またはその両方を含める必要があります。 符号付き指数は、eまたはEによって導入されます。
浮動小数点リテラルのいくつかの例を以下に示します。
3.14159 /* Legal */ 314159E-5L /* Legal */ 510E /* Illegal: incomplete exponent */ 210f /* Illegal: no decimal or exponent */ .e55 /* Illegal: missing integer or fraction */
文字定数
文字リテラルは一重引用符で囲みます。たとえば、 'x'はchar型の単純変数に格納できます。
文字リテラルは、プレーン文字( 'x'など)、エスケープシーケンス( '\ t'など)、ユニバーサル文字( '\ u02C0'など)です。
Cには、改行(\ n)やタブ(\ t)のようにバックスラッシュを前に付けると特別な意味を持つ文字があります。
以下は、いくつかのエスケープシーケンス文字を示す例です。
#include <stdio.h> int main() { printf("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
次の例では詳細を説明します。
#include <stdio.h> #define LENGTH 10 #define WIDTH 5 #define NEWLINE '\n' int main() { int area; area = LENGTH * WIDTH; printf("value of area : %d", area); printf("%c", NEWLINE); return 0; }上記のコードをコンパイルして実行すると、次の結果が生成されます。
value of area : 50
constキーワード
const prefixを使用して、次のような特定の型の定数を宣言することができます。
const type variable = value;次の例では詳細を説明します。
#include <stdio.h> int main() { const int LENGTH = 10; const int WIDTH = 5; const char NEWLINE = '\n'; int area; area = LENGTH * WIDTH; printf("value of area : %d", area); printf("%c", NEWLINE); return 0; }上記のコードをコンパイルして実行すると、次の結果が生成されます。
value of area : 50