C言語の定数を区別する方法

C言語で使える定数は、以下の種類に分けられます

  1. 数値リテラル:10進数、8進数、16進数で表され、符号を付けられます。例:123、-456、0x1A、077
  2. 浮動小数点数は、整数部、小数部、指数部の3つの部分からなり、正負の符号を持つことができます。例:3.14、-0.123、1.23E-4
  3. 文字定数: 一つの文字を単一引用符で囲ったもの。例: ‘a’, ‘1’, ‘+’。
  4. 文字定数:二重引用符で囲まれた文字列である。例えば:”Hello”, ”123”, ”C言語”。
  5. 列挙定数: 列挙型に定数を定義します。例えば: enum Color { RED, GREEN, BLUE }; で RED, GREEN, BLUE です。
  6. 定数:#defineプリプロセッサで定義された定数。例:#define PI 3.14

定数の妥当性を判断するには、以下のルールに従うことができます。

  1. 整定数定数は真の整数を表すものであり、表される整定数の範囲に収まっていなければなりません。
  2. 浮動小数点定数は、小数点表記に従っており、その浮動小数点数型の範囲内である必要があります。
  3. 文字定数は1文字しか持てず、シングルクォーテーションで囲まなければいけません。
  4. 文字列定数はたくさんの文字を含んでいて、 二重引用符で括られている必要があります。
  5. 列挙定数は列挙型の定義済みの定数でなければなりません。
  6. プリプロセス段階でシンボル定数が対応する値に置換されるため、合法性の問題はありません。

留意すべきは、定数の正当性の判断はコンパイル時に行われるため、定数がランタイムにこそ初めて動的に決定されるのであれば、コンパイル時には判断することはできないことである。

bannerAds