C データ型

C 変数 なし

データ型

変数の章で説明したように、C の変数は指定されたデータ型である必要があります。 printf() 関数内でフォーマット指定子を使用して表示します。

// 変数の作成
int myNum = 5;             // 整数
float myFloatNum = 5.99;   // 浮動小数点数
char myLetter = 'D';       // キャラクター

//印刷変数
printf("%d\n", myNum);
printf("%f\n", myFloatNum);
printf("%c\n", myLetter);

結果

5
5.990000
D

基本的なデータ型

データ型は、変数が保存する情報のサイズとタイプを指定します。

このチュートリアルでは、最も基本的なものに焦点を当てます。

データ型 サイズ 説明
int 2 or 4 bytes 小数点を含まない整数を格納します
float 4 bytes 1 つ以上の小数を含む小数を格納します。 6 ~ 7 桁の 10 進数を保存するには十分です
double 8 bytes 1 つ以上の小数を含む小数を格納します。 15 桁の 10 進数を保存するには十分です
char 1 byte 単一の文字/文字/数字、または ASCII 値を保存します

基本的な形式指定子

データ型ごとに異なる形式指定子があります。 以下にその一部を示します。

形式指定子 データ型
%d or %i int
%f float
%lf double
%c char
%s 文字列 (テキスト) に使用されます。これについては、後の章で詳しく説明します。

小数点以下の精度を設定する

おそらく、浮動小数点数を出力すると、小数点以下の桁数が出力に表示されることにすでにお気づきかと思います。

float myFloatNum = 3.5;
double myDoubleNum = 19.99;

printf("%f\n", myFloatNum); // 出力 3.500000
printf("%lf", myDoubleNum); // 出力 19.990000

結果

3.500000
19.990000

余分なゼロを削除する (10 進精度を設定する) 場合は、ドット (.) の後に桁数を指定する数値を使用できます。 小数点の後に表示されます:

float myFloatNum = 3.5;

printf("%f\n", myFloatNum); // デフォルトでは小数点以下 6 桁が表示されます
printf("%.1f\n", myFloatNum); // 1桁のみ表示
printf("%.2f\n", myFloatNum); // 2 桁のみを表示
printf("%.4f", myFloatNum);   // 4桁のみ表示

結果

3.500000
3.5
3.50
3.5000

型変換

場合によっては、あるデータ型の値を別のデータ型に変換する必要があります。 これは型変換と呼ばれます。

たとえば、2 つの整数 52 で割ろうとすると、次のようになります。 結果は 2.5 になります。 ただし、ここでは整数 (浮動小数点値ではない) を扱っているため、次の例では 2 が出力されるだけです。

int x = 5;
int y = 2;
int sum = 5 / 2;

printf("%d", sum); // 出力 2

結果

2

正しい結果を得るには、型変換がどのように機能するかを知る必要があります。

C には 2 種類の変換があります:

  • 暗黙的な変換 (自動的に)
  • 明示的な変換 (手動)

暗黙的な変換

暗黙的な変換は、ある型の値を別の型に割り当てるときにコンパイラによって自動的に行われます。

たとえば、int 値を float 型に割り当てる場合:

// 自動変換: int から float
float myFloat = 9;

printf("%f", myFloat); // 9.000000

結果

9.000000

ご覧のとおり、コンパイラは int 値 9 を float 値 9.000000 に自動的に変換します。 。

特定の状況では特定の値を制御できなくなる可能性があるため、これには危険が伴います。

特に逆の場合 - 次の例では、float 値 9.99 を int 値 に自動的に変換します。 9:

// 自動変換: float から int
int myInt = 9.99;

printf("%d", myInt); // 9

結果

9

.99 はどうなりましたか? プログラムにそのデータが必要になるかもしれません。 ので注意してください。 予期しない結果を避けるために、このような状況でコンパイラーがどのように動作するかを理解しておくことが重要です。

別の例として、2 つの整数 52 で割ると、合計は次のようになります。 2.5 です。 このページの最初からわかるように、合計を整数として保存すると、結果は次のようになります。 数値 2 のみを表示します。 したがって、合計を float または double として保存する方がよいでしょう。

float sum = 5 / 2;

printf("%f", sum); // 2.000000

結果

2.000000

結果が 2.5 ではなく、2.00000 であるのはなぜですか? そうですね、割り算では 5 と 2 は依然として整数だからです。 この場合、整数値を浮動小数点値に手動で変換する必要があります。 (以下を参照)。

明示的な変換

明示的な変換は、値の前のかっこ () 内に型を置くことによって手動で行われます。

上記の例の問題を考慮すると、正しい結果が得られます。

/ 手動変換: int から float
float sum = (float) 5 / 2;

printf("%f", sum); // 2.500000

結果

2.500000

変数の前に型を置くこともできます。

int num1 = 5;
int num2 = 2;
float sum = (float) num1 / num2;

printf("%f", sum); // 2.500000

結果

2.500000

そして、「小数精度」について学んだので、 前の章では、必要に応じて余分なゼロを削除することで、出力をさらにきれいにすることができました。

int num1 = 5;
int num2 = 2;
float sum = (float) num1 / num2;

printf("%.1f", sum); // 2.5

結果

2.5