C言語には、さまざまな種類のデータ型があります。これらのデータ型は、プログラム内で使用されるデータの種類を定義します。データ型は主に以下のカテゴリに分類されます:基本データ型、派生データ型、列挙型、および型定義によるユーザー定義データ型。
1.基本データ型(Primitive Data Types)
1.1.整数型(int)
int
: 整数を表す標準的なデータ型。short int
: より小さな範囲の整数。long int
: より大きな範囲の整数。long long int
: 非常に大きな範囲の整数。unsigned int
: 符号なし整数。
int a = 10; short int b = 5; long int c = 100000; long long int d = 10000000000; unsigned int e = 20;
1.2.浮動小数点型(Floating Point Types)
float
: 単精度浮動小数点数。double
: 倍精度浮動小数点数。long double
: 拡張倍精度浮動小数点数。
float f = 3.14f; double g = 3.141592653589793; long double h = 3.141592653589793238462643383279502884L;
1.3.文字型(Character Type)
char
: 単一の文字を表すデータ型。
char ch = 'A';
1.4.ブール型(Boolean Type)
bool
: 真理値を表すデータ型(C99標準以降)。
#include <stdbool.h> bool flag = true;
2.派生データ型(Derived Data Types)
2.1.配列(Array)
- 同じデータ型の一連の要素を格納するデータ型。
int numbers[5] = {1, 2, 3, 4, 5};
2.2.ポインタ(Pointer)
- メモリ内のアドレスを格納するデータ型。
int a = 10; int *ptr = &a;
2.3.構造体(Structure)
- 異なるデータ型のグループをひとまとめにするデータ型。
struct Person { char name[50]; int age; }; struct Person person1 = {"Alice", 30};
2.4.共用体(Union)
- 異なるデータ型の中から一つを格納するデータ型。メモリを共有します。
union Data { int i; float f; char str[20]; }; union Data data; data.i = 10;
3.列挙型(Enumeration Type)
- 列挙型は、関連する定数のセットを作成するために使用されます。
enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; enum Weekday today = Monday;
4.型定義によるユーザー定義データ型(Typedef)
typedef
を使用して、既存のデータ型に新しい名前を付けることができます。
typedef int Integer; Integer x = 10;
5.例:さまざまなデータ型の使用
以下は、C言語のさまざまなデータ型を使用する基本的なプログラムの例です。
#include <stdio.h> #include <stdbool.h> typedef int Integer; struct Person { char name[50]; int age; }; union Data { int i; float f; char str[20]; }; enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; int main() { // 基本データ型 int a = 10; float b = 3.14f; char ch = 'A'; bool flag = true; // 派生データ型 int numbers[5] = {1, 2, 3, 4, 5}; int *ptr = &a; struct Person person1 = {"Alice", 30}; union Data data; data.i = 100; enum Weekday today = Monday; // 型定義によるユーザー定義データ型 Integer x = 20; // 出力 printf("Integer a: %d\n", a); printf("Float b: %.2f\n", b); printf("Character ch: %c\n", ch); printf("Boolean flag: %d\n", flag); printf("Array numbers: %d, %d, %d, %d, %d\n", numbers[0], numbers[1], numbers[2], numbers[3], numbers[4]); printf("Pointer ptr: %p\n", ptr); printf("Person name: %s, age: %d\n", person1.name, person1.age); printf("Union data.i: %d\n", data.i); printf("Enum today: %d\n", today); printf("Typedef Integer x: %d\n", x); return 0; }
このプログラムは、さまざまなデータ型を使用して値を格納し、それらを出力します。C言語のデータ型を理解することで、プログラムのメモリ使用やパフォーマンスを効果的に管理することができます。