Linux講座にようこそ。このページは「C言語プログラミング入門 - 第12章.その他の型」です。

C言語プログラミング入門

12. その他の型(4/4)

12.5 定数の取扱い

定数に付いては既に説明しましたが、ここでは更に詳しい説明を行います。

12.5.1 基本的な記述方法

既に説明したものをまとめました。文字定数と文字列定数との相違については、特に注意して下さい。

【表12-2】 定数の記述方法
区分記述方法、その他
文字定数半角1文字をアポストロフィで括ります。(例:'a'や'1')
文字列定数複数の文字からなる文字列を引用符で括ります。(例:"hello"や"今日は")
整数定数八進数、十進数、十六進数の3種類が有ります。
八進数
先頭に「0」を付けて指定します。2桁目以降は0から7の数字です。(例:011や077)
十進数
先頭に「0」を付けずに、普通に指定します。(例:10や200)
十六進数
先頭に「0x」又は「0X」を付けて指定します。3桁目以降は0から9の数字か、AからFの英字(小文字も可)です。(例:0x11や0xff)
浮動小数点定数小数点を表すピリオドを付けて指定します。(例:0.05や3.14)

制御文字(コントロールコード)も、文字定数として扱うことができます。(ASCIIコード表の0x00〜0x1Fと0x7Fの文字です。詳細は「付録1.ASCIIコード表」を参照してください)

  • '\0' … ヌル文字(NUL)
  • '\a' … ベル(BEL)
  • '\t' … 水平タブ(HT)
  • '\n' … 復帰/改行(LF/NL)
  • '\v' … 垂直タブ(VT)
  • '\r' … 復帰(CR)

12.5.2 数値を表す定数の記述方法

数値を表す定数には整数と浮動小数点数の2種類が有りますが、それらの記述形式について説明します。

定数は指定された値により、適切な型のデータとしてメモリ上に確保されます。例えば、整数定数の場合はint型、浮動小数点定数の場合はdouble型として確保されます。通常は、これであまり問題は無いと思いますが、非常に大きな値を取扱いたいような時には問題が起きてきます。例えば、int型が4バイト長の場合、表現できる最大の値は2147483647(約21億)ですので、これより大きな値は初期値として指定できないということになります。対応策としては、unsigned int型であれば倍の値まで表現できますので、int型ではなくunsigned int型として確保すればよいことになります。

数値を表す定数の場合は、数値の後ろに接尾語(サフィックス)を指定することにより、型の指定を行えるようになっています。以下に接尾語を示します。

【表12-3】 接尾語一覧
区分接尾語意味
整数定数L または llong int型として確保します。(例:2147483648L)
LL または lllong long int型として確保します。(例:2147483648LL)
U または uunsigned型として確保します。上記LやLLと組み合わせることもできます。(例:2147483648U)
浮動小数点定数F または ffloat型として確保します。(例:0.05F)
L または llong double型として確保します。(例:3.1415926535L)

12.5.3 読み込み専用領域の指定

変数は値を設定したり、変更したりできますが、場合によっては変更を禁止したいことが有ります。この様な場合はconst型修飾子を指定します。これにより、一種の定数として取り扱うことになります。

const 型名 変数名 = 初期値; ← 初期値は省略可能です

const型修飾子を指定した変数に値を設定したい場合は、宣言時に初期値を指定することになります。初期値以外で、値を設定することは出来ませんし、++演算子等による値の更新も出来ません。(コンパイルエラーになります)

void func(const int Arg1, int Arg2);

int main(void)
{
    int arg1 = 0;
    int arg2 = 0;

    func(arg1, arg2);

}

void func(const int pArg1, int pArg2)
{

    pArg1 = pArg1 + 10; ← pArg1はconst型修飾子を指定していますので、更新は出来ません
    pArg2 = pArg2 + 10; ← pArg2は更新可能です

}