06_データ型まとめ

「プログラム上の全てのデータには必ず何らかのデータ型がある。」
ここまでにデータ型として整数型を学びました。ここでは
・そのほかのデータ型をまとめ
・変数に対する「定数」の存在
を学びます。

あまりなじみのないC言語のルールが多く出てきますが、何度も確認して覚えていきましょう。

■ 06_1 C言語でのデータ型

値を格納する変数には「どのような種類の値か」を示すデータ型を指定する必要があります。 以下は主な基本データ型の一覧です。

型名 意味 使用例
int 整数型 10, -5, 0
double 倍精度小数点 3.14, -2.7
float 単精度小数点 3.14f, -0.5f
char 文字型 'A', 'b', '7'
文字列 文字の並び "Hello", "abc"

■ 06_2 定数とは?

int x = 10;

この例では、10 が定数です。

以下もすべて定数:

3.14, 'A', "Hello", 0xFF, 0755

3.14 ・・・実数型(float)定数
'A' ・・・文字(char)型定数
"Hello"・・・文字列(char配列)定数
0xFF・・・整数型(int)定数 16進数
0755・・・整数型定数 8進数


■ 06_3 定数の種類と型

C言語では、定数を書いた時点でその値に応じたデータ型が自動的に決まります

表現 データ型 備考
100 int 整数
3.14 double 倍精度実数
3.14f float f をつけると float型
'A' char 1文字、シングルクォート
"abc" char配列 文字列(文字の配列)
0x10 int 16進数リテラル
075 int 8進数リテラル

■ 06_4 数値の表記方法

表記形式 意味
10 10進数(通常) int x = 10;
0xFF 16進数 int x = 0xFF;(=255)
0755 8進数 int x = 0755;(=493)
3.14 実数(double) double d = 3.14;
3.14f 実数(float) float f = 3.14f;

■ 06_5 数値と文字は違う

C言語では、7(数値)と '7'(文字)はまったく別のものです。

表現 内容
7 数値の 7 int
'7' 文字の「7」 char

■ 06_6 ASCIIコード表(抜粋)

ASCIIコードの全体表はこちらから確認できます:
👉 ASCIIコード一覧(Wikipedia)

代表的な文字の一部:

文字 10進 16進 文字 10進 16進
'A' 65 0x41 'a' 97 0x61
'B' 66 0x42 'b' 98 0x62
'0' 48 0x30 '1' 49 0x31
'!' 33 0x21 '?' 63 0x3F

■ 06_7 コードを書いて試してみよう

以下のコードを入力して、実際に int, double, char 型の定数や変数を使ってみましょう。

#include <stdio.h>

int main(void) {
    int score = 90;
    double rate = 0.85;
    char grade = 'A';

    printf("スコアは %d 点です\n", score);
    printf("成功率は %.2f です\n", rate);
    printf("評価は %c です\n", grade);

    return 0;
}

実行結果を見て、変数に入った定数がどのように画面に表示されるか確認してみましょう。


■ 理解度チェック

Q1. 以下のコードで 5 の型は?

int a = 5;

ア. 文字型定数 
イ. 整数型定数 
ウ. 実数型定数 
エ. 整数型変数

正解と解説

正解:イ. 整数型定数
5 は定数で、整数リテラルです。a は変数ですが、5 自体は型が int の定数です。

Q2. 以下のコードで '!' の型は?

char mark = '!';

ア. 文字型定数 
イ. 整数型変数 
ウ. 実数型定数 
エ. 文字列定数

正解と解説

正解:ア. 文字型定数
'!' は1文字で、シングルクォーテーションで囲まれており、char 型の定数です。

Q3. 以下のコードで rate の型は?

float rate = 0.05f;

ア. 実数型定数(float) 
イ. 実数型変数 
ウ. 整数型変数 
エ. 文字型定数

正解と解説

正解:イ. 実数型変数
変数 rate の型は float。右辺の 0.05f は float 型の定数ですが、質問は rate の型を問うています。

Q4. 次のうち「整数型変数」として正しいものはどれか。

ア. 100 
イ. int number = 100; 
ウ. '1' 
エ. 3.14f

正解と解説

正解:イ. int number = 100;
これは整数型(int)の変数宣言。その他は定数や異なる型の例です。

Q5. 以下のうち「文字型定数」に当たるものはどれか。

ア. 'A' 
イ. "A" 
ウ. 65 
エ. char c = 'B';

正解と解説

正解:ア. 'A'
文字定数は1文字を ' ' で囲んだ形式です。"A" は文字列、65 は整数定数、char c = 'B'; は文字型変数です。

Q6. 次のうち float 型の定数として正しいものはどれか。

ア. 3.14 
イ. 3.14f 
ウ. "3.14" 
エ. 3

正解と解説

正解:イ. 3.14f
f をつけることで float 型の定数になります。何もつけないと double 型とみなされます。

Q7. 以下の宣言で name のデータ型は?

char name[] = "Ken";

ア. 文字型定数 
イ. 文字列定数 
ウ. char配列 
エ. charポインタ

正解と解説

正解:ウ. char配列
"Ken" は文字列リテラルで、char 型の配列として扱われます。

Q8. 以下のコードで 'A' + 1 の結果は?

char c = 'A' + 1;
printf("%c", c);

ア. 'B' 
イ. 'A'1 
ウ. 66 
エ. エラー

正解と解説

正解:ア. 'B'
'A' は ASCIIコードで 65、+1 すると 66。これは 'B' に対応します。

Q9. 以下のうち 8進数リテラルとして正しい表現はどれか。

ア. 0x20 
イ. 0b100 
ウ. 0755 
エ. 8.0

正解と解説

正解:ウ. 0755
先頭に 0 をつけると8進数リテラルになります。0x は16進数、0b はC標準では使えません。