工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C言語のデータ型完全ガイド:整数、浮動小数点、void型

データ型の分類

C言語のデータ型は、異なる型の変数や関数を宣言するために使用される広範なシステムです。変数の型は、ストレージでの占有サイズと、格納されたビットパターンの解釈方法を決定します。

Cの型は以下のように分類されます:

番号型と説明
1基本型
算術型で、さらに(a)整数型と(b)浮動小数点型に分類されます。
2列挙型
これも算術型で、プログラム全体で特定の離散的な整数値のみを割り当て可能な変数を定義するために使用されます。
3void型
型指定子voidは値が利用できないことを示します。
4派生型
(a)ポインタ型、(b)配列型、(c)構造体型、(d)共用体型、(e)関数型を含みます。

配列型と構造体型は総称して集合型と呼ばれます。関数の型は関数の戻り値の型を指定します。以下のセクションでは基本型を見ていき、その他の型は後の章で扱います。

整数型

以下の表は標準的な整数型の詳細、ストレージサイズ、値の範囲を示しています:

型ストレージサイズ値の範囲
char1バイト-128〜127 または 0〜255
unsigned char1バイト0〜255
signed char1バイト-128〜127
int2または4バイト-32,768〜32,767 または -2,147,483,648〜2,147,483,647
unsigned int2または4バイト0〜65,535 または 0〜4,294,967,295
short2バイト-32,768〜32,767
unsigned short2バイト0〜65,535
long8バイト(32ビットOSでは4バイト)-9223372036854775808〜9223372036854775807
unsigned long8バイト0〜18446744073709551615

特定のプラットフォームでの型や変数の正確なサイズを取得するには、sizeof演算子を使用します。式sizeof(type)はオブジェクトまたは型のストレージサイズをバイト単位で生成します。以下は、limits.hヘッダーファイルで定義された様々な定数を使用して、マシン上の様々な型のサイズを取得する例です:

Live Demo
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>

int main(int argc, char** argv) {
    printf("CHAR_BIT : %d\n", CHAR_BIT);
    printf("CHAR_MAX : %d\n", CHAR_MAX);
    printf("CHAR_MIN : %d\n", CHAR_MIN);
    printf("INT_MAX : %d\n", INT_MAX);
    printf("INT_MIN : %d\n", INT_MIN);
    printf("LONG_MAX : %ld\n", (long) LONG_MAX);
    printf("LONG_MIN : %ld\n", (long) LONG_MIN);
    printf("SCHAR_MAX : %d\n", SCHAR_MAX);
    printf("SCHAR_MIN : %d\n", SCHAR_MIN);
    printf("SHRT_MAX : %d\n", SHRT_MAX);
    printf("SHRT_MIN : %d\n", SHRT_MIN);
    printf("UCHAR_MAX : %d\n", UCHAR_MAX);
    printf("UINT_MAX : %u\n", (unsigned int) UINT_MAX);
    printf("ULONG_MAX : %lu\n", (unsigned long) ULONG_MAX);
    printf("USHRT_MAX : %d\n", (unsigned short) USHRT_MAX);
    return 0;
}

上記プログラムをコンパイルして実行すると、Linuxでは以下の結果が得られます:

CHAR_BIT : 8
CHAR_MAX : 127
CHAR_MIN : -128
INT_MAX : 2147483647
INT_MIN : -2147483648
LONG_MAX : 9223372036854775807
LONG_MIN : -9223372036854775808
SCHAR_MAX : 127
SCHAR_MIN : -128
SHRT_MAX : 32767
SHRT_MIN : -32768
UCHAR_MAX : 255
UINT_MAX : 4294967295
ULONG_MAX : 18446744073709551615
USHRT_MAX : 65535

浮動小数点型

以下の表は標準的な浮動小数点型の詳細、ストレージサイズ、値の範囲、精度を示しています:

型ストレージサイズ値の範囲精度
float4バイト1.2E-38〜3.4E+386桁
double8バイト2.3E-308〜1.7E+30815桁
long double10バイト3.4E-4932〜1.1E+493219桁

ヘッダーファイルfloat.hは、これらの値や実数のバイナリ表現に関するその他の詳細をプログラムで使用できるマクロを定義しています。以下の例はfloat型が占めるストレージスペースとその範囲値を出力します:

Live Demo
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>

int main(int argc, char** argv) {
    printf("Storage size for float : %d \n", sizeof(float));
    printf("FLT_MAX : %g\n", (float) FLT_MAX);
    printf("FLT_MIN : %g\n", (float) FLT_MIN);
    printf("-FLT_MAX : %g\n", (float) -FLT_MAX);
    printf("-FLT_MIN : %g\n", (float) -FLT_MIN);
    printf("DBL_MAX : %g\n", (double) DBL_MAX);
    printf("DBL_MIN : %g\n", (double) DBL_MIN);
    printf("-DBL_MAX : %g\n", (double) -DBL_MAX);
    printf("Precision value: %d\n", FLT_DIG);
    return 0;
}

上記プログラムをコンパイルして実行すると、Linuxでは以下の結果が得られます:

Storage size for float : 4
FLT_MAX : 3.40282e+38
FLT_MIN : 1.17549e-38
-FLT_MAX : -3.40282e+38
-FLT_MIN : -1.17549e-38
DBL_MAX : 1.79769e+308
DBL_MIN : 2.22507e-308
-DBL_MAX : -1.79769e+308
Precision value: 6

void型

void型は値が利用できないことを指定します。以下の3種類の状況で使用されます:

番号種類と説明
1関数の戻り値としてvoid
値を返さないCの様々な関数、つまりvoidを返す関数があります。戻り値のない関数の戻り値の型はvoidです。例:void exit(int status);
2関数の引数としてvoid
パラメータを受け取らないCの様々な関数があります。パラメータのない関数はvoidを受け取れます。例:int rand(void);
3voidへのポインタ
void *型のポインタはオブジェクトのアドレスを表しますが、その型は表しません。例:メモリ割り当て関数void *malloc(size_t size);はvoidへのポインタを返し、任意のデータ型にキャスト可能です。

C言語

  1. 電気スイッチの理解:タイプ、機能、応用
  2. 5つのデータセンターモデルを解説:設計、ユースケース、事例
  3. 2021年の主要クラウドコンピューティングモデル8選
  4. データ侵害の8つの典型タイプ:実例と影響を徹底解説
  5. C# 変数とプリミティブデータ型:完全マスターガイド
  6. C++データ型完全ガイド:基本型、修飾子、ベストプラクティス
  7. C言語データ型完全解説:int、float、charなど
  8. C 言語の変数、データ型、定数 – 実践ガイド
  9. C++データ抽象化完全マスター:インターフェースと実装の分離
  10. Python データ型マスター: 実践ガイド
  11. Javaプリミティブデータ型:例付き完全ガイド