Index

HOME > プログラムTOP > C++




C++の基礎知識(2)

【データ型篇】

| ●基本データ型 | ●列挙型 | ●複合型 | ●typedef |
( 記述篇, 定数篇, 変数篇, 演算子篇, 関数篇, 制御文篇, ポインタ篇, 構造体篇, クラス篇, 番外篇 )

sasaraan programming

Exposition

●基本データ型

 関数や変数などを定義する際は、すべてデータ型を指定する必要があります。既存の関数もすべてデータ型が指定されています。
 データ型には様々な種類があり、大まかには、論理型 (bool) 、整数型 (int) 、浮動小数点型 (float) 、文字型 (char) などに分類されます。なお、これらの値の範囲には固定されているものと使っているコンパイラやコンピュータに依存するものとがあります。下表は 32ビット環境での主なデータ型の一例です。
データ型 , ( )は省略可値の範囲ビット幅
booltrue(0以外) / false(0)8
char-128 ... 1278
unsigned char0 ... 2558
short (int)-32,768 ... 32,76716
unsigned short (int)0 ... 65,53516
int-2,147,483,648 ... 2,147,483,64732
unsigned (int)0 ... 4,294,967,29532
long (int)-2,147,483,648 ... 2,147,483,64732
unsigned long (int)0 ... 4,294,967,29532
__int64-2^63 ... 2^63-164
floatおよそ 10^-38 ... 10^3832
doubleおよそ 10^-308 ... 10^30864
void(値を持たないデータ型)...

●列挙型

 列挙型は、表意的な文字を整数値で表す特殊な型です。enum キーワードを使って宣言し、要素(定数)は{}で囲んで定義します。

書式: enum 型名 { 要素リスト } 変数1, 変数2, ... ;

enum primarycolor {red, green, blue} ;      // 宣言の基本形
enum primarycolor {red, green, blue} pricolor1; // 宣言と同時に変数を宣言
enum {red, green, blue} procolor1, pricolor2;  // 列挙体名を省略

 上記の様にすると、最初の要素から順に、0( = red), 1( = green), 2( = blue) の整数値が当てられます。

●複合型

 複数のデータ型を持った特殊なデータ型も利用できます。これには、構造体、共用体などがあります。構造体は struct 、共用体は union を使って宣言します。なお、これらの内容については 別章「構造体篇」を参照してください。
// 構造体
/* 複数のデータ型のデータを
    一つのデータとしてまとめる */
struct Member {
    int id ;
    char name[64] ;
} ;
// 共用体
/* 同じメモリ領域にあるデータを
    別のデータ型として認識させる */
union MojiData {
    char moji[4] ;
    int numeric ;
} ;
 また、クラスを使うとより応用範囲が広がります。変数や定数、関数など、データ型や異なるスコープの様々なデータを一箇所に集めて処理することができます。なお、この内容については別章「クラス篇」を参照してください。
// クラス : 様々なデータや関数をひとまとめにする
class Card {
    char name[10] ;       // 変数
    int  figure ;            // 変数
    void setprop() ;       // 関数
} ;

●typedef

 typedef キーワードを使って新しい型を定義することができます。下記の例では、unsigned char 型の uchar 型を定義しています。以降、uchar 型として変数や関数を定義することが可能になります。

書式: typedef データ型 型名 ;

typedef unsigned char uchar ; // uchar型の作成

 構造体なども同様に新しい型として定義することができます。
struct tagPoint { 
    int X;
    int Y;
} ;
typedef struct tagPoint Point ;        // Point型の作成

www.sasaraan.net

(c) morijoh