☜前の章へ 文字と改行の出力方法とコメントの書き方
☞次の章へ 演算をしてみよう
- 変数の宣言方法
- 変数の型とは何か
- 変数名の付け方のルール
- 変数の出力方法
- 小数を表示する際に小数点以下を四捨五入する方法
- 小数点以下を切り捨てる方法
- 変数に値を代入する方法
- 変数を初期化する方法
- 変数に他の変数を代入する方法
変数とは数値などのデータを格納することができるもので、変数を使い計算などを行うことが出来ます。プログラミングにおいてなくてはならないものです。
C言語の変数の宣言方法
変数とは、箱のようなものです。変数には数値や文字列などのデータを格納することができます。
#include <stdio.h>
int main(void) {
int num;
return 0;
}変数の宣言を次のように行っています。numが変数です。
int num;変数を使うためには、このように書く必要があり、変数を宣言すると言います。
- intというのは変数の型のことで整数型を表す
- 変数numには整数値のみ格納することができる
変数の型や変数に値を格納する方法については、後程詳しく解説します。
C言語の変数の型とは

上記の図を見てください。int型の変数には数字の100を格納することができますが、文字のAを格納することはできません。char型には文字のAを格納することができます。
このように、変数は型によって格納できるデータが異なります。
変数には種類があり、型(種類)を指定してあげることで変数に格納できるものが変化します。
- 変数には種類がある
- 変数の型を指定することで格納できるデータの種類が変わる
以下の表はC言語の変数の型の一例です。
| 種類 | データ型 | サイズ | 値の範囲 |
| 型なし | void | – | – |
| 文字列 | char | 2 | 0~65,535 |
| 整数型 | int | 4 | -2147483648~2147483648 |
| 浮動小数点型 | float | 4 | 1.401298E-45~3.4028235e+38 |
| double | 8 | 4.94065645841246544e-324~1.79769313486231570e+308 |
- void(ボイド)型:void型は型がないという意味です。関数でよく使用される型になります。関数は8章で学ぶことが出来ます。
- char(チャーまたはキャラ)型:char型の変数にはb,D,r,wなどの文字を1文字格納することができます。
- int(イント)型:int型は整数型なので、11、334、9428などのように小数点などを含まない数値を格納することが出来る変数の型です。
- float(フロート)型、double(ダブル)型:float型、double型は浮動小数点型なので、2.5、0.009などの小数点が含まれる数値を格納することが出来る変数の型です。
変数名の付け方のルール
- 変数名にはアルファベット、数字、_(アンダーバー)を使用できる
int num_1;- 一文字目に数字は使用できない
int 1num;- 大文字と小文字は区別される
int num;
int Num;- 予約語(C言語に登録されている単語のこと)は使用できない
| ANSI 予約語一覧 | |||
| auto | break | case | char |
| const | continue | default | do |
| double | else | enum | extern |
| float | for | goto | if |
| int | long | register | return |
| short | signed | sizeof | static |
| struct | switch | typedef | union |
| unsigned | void | volatile | while |
これらは予約語というもので、これらの単語は変数名とすることはできません。
予約語で変数を宣言するとエラーになるので、もしエラーが発生したら変数名を変更しましょう。
変数に値を代入する方法
まずは、以下のソースコードをVSCODEで実行してみましょう。
#include <stdio.h>
int main(void) {
int num;
char alf;
float dec_f;
double dec_d;
num = 100;
alf = 'A';
dec_f = 1.5f;
dec_d = 5.5;
printf("%d\n", num);
printf("%c\n", alf);
printf("%f\n", dec_f);
printf("%lf\n", dec_d);
return 0;
}変数への値の代入を以下のように行っています。
num = 100;
alf = 'A';
dec_f = 1.5f;
dec_d = 5.5;変数numには数字の100が入っています。
変数alfには文字のAが入っています。
変数dec_fには数字の1.5が入っています。float型の場合、代入する値の末尾に「f」を書く必要があります。「f」を入れないとデフォルトでdouble型だとみなされて警告が出る場合があります。
変数dec_dには数字の5.5が入っています。double型では末尾にfは必要ありません。
C言語で変数の値を出力し表示する方法
#include <stdio.h>
int main(void) {
int num;
char alf;
float dec_f;
double dec_d;
num = 100;
alf = 'A';
dec_f = 1.5f;
dec_d = 5.5;
printf("%d\n", num);
printf("%c\n", alf);
printf("%f\n", dec_f);
printf("%lf\n", dec_d);
return 0;
}出力結果

変数の中身を出力したい場合は、printf()を使います。
printf("%d\n", num);
printf("%c\n", alf);
printf("%f\n", dec_f);
printf("%lf\n", dec_d);%dなどは変換指定子といい、printf()の右側にある変数の型によって書き方が異なります。変換指定子が書かれた位置に変数の値が出力されます。
変換指定子一例
| 変換指定子 | 変数の型 | 概要 |
| %c | char | 文字 |
| %s | char (配列) | 文字列 |
| %d | int | 10進整数 |
| %f | float | 単精度の実数 |
| %lf | double | 倍精度の実数 |
C言語で小数を出力する際に小数点以下を切り捨てる方法
C言語の小数点以下を四捨五入する方法
#include <stdio.h>
int main(void) {
float dec_f;
dec_f = 1.5;
printf("%.1f\n", dec_f);
return 0;
}出力結果

%の後ろに「.1」と書くことで小数点第二位が四捨五入され、小数点第一位までの値が表示されています。
C言語の小数点以下を切り捨てる方法
#include <stdio.h>
int main(void) {
float dec_f;
dec_f = 1.23456;
printf("%.3f\n", dec_f);
return 0;
}出力結果

1.23456を小数点第三位まで表示するように指定したら、1.235と表示されました。
これは小数点第四位の5が四捨五入されたためです。
フォーマット指定子fで桁数指定する場合、基本的に四捨五入されてしまいます。
四捨五入したくない場合もあるので、小数点以下を切り捨てる方法を紹介します。
#include <stdio.h>
#include <math.h>
int main() {
float dec_a = 1.23456;
//四桁目が四捨五入され1.235と表示される
//フォーマット指定子fで桁数指定する場合、基本的に四捨五入される
printf("%.3f\n", dec_a);
//一例としてfloor()関数を使用する。floorは小数点以下を切り捨てる
//(1)1.23456 * 1000 = 1234.56
//(2)floor()関数を実行 1234.56 → 1234
//(3)1234 / 1000 → 1.234
float dec_b = floor(dec_a * 1000) / 1000; // 3桁目まで切り捨てる例
// 結果を表示
printf("%.3f\n", dec_b);
return 0;
}出力結果

floor()関数を使うと小数点以下を切り捨てることができます。
floor()関数を使いたい場合、ソースコードの冒頭に「#include <math.h>」と書く必要があります。
これは以下の順序で、以下のことが行われています。
- (dec_a * 1000) 「1.23456 * 1000 = 1234.56」
- floor(dec_a * 1000) 「1234.56 → 1234」
- floor(dec_a * 1000) / 1000 「1234 / 1000 → 1.234」
変数を初期化する方法
#include <stdio.h>
int main(void)
{
int num = 100;
char alf = 'A';
printf("%d\n", num);
printf("%c\n", alf);
return 0;
}出力結果

変数の宣言と同時に代入することを、初期化と言います。
変数に他の変数を代入する方法
#include <stdio.h>
int main(void)
{
int num_a = 10;
int num_b = 20;
num_a = num_b;
printf("%d", num_a);
return 0;
}出力結果

以下のように変数に他の変数を代入することができます。
num_a = num_b;num_a = num_bのように変数に他の変数を代入することができます。
num_aには10が入っていましたが、20に変わりました。
練習問題
①から⑫の問題は、一連の問題となっています。①を解いたら、解答を消さずに、②以降も同じファイルで解いてください。
整数値型の変数 num_aを宣言し、10を代入しましょう
#include <stdio.h>
int main() {
// 問1
int num_a = 10;
return 0;
}浮動小数点型の変数 dec_aを宣言し、10.5 を代入しましょう
#include <stdio.h>
int main() {
// 問1
int num_a = 10;
// 問2(float dec_a = 10.5;も正解)
double dec_a = 10.5;
return 0;
}文字型の変数alf_aを宣言し、Xを代入しましょう
#include <stdio.h>
int main() {
// 問1
int num_a = 10;
// 問2(float dec_a = 10.5;も正解)
double dec_a = 10.5;
// 問3
char alf_a = 'X';
return 0;
}変数num_a、dec_a、alf_aをそれぞれコンソールに表示しましょう
#include <stdio.h>
int main() {
// 問1
int num_a = 10;
// 問2(float dec_a = 10.5;も正解)
double dec_a = 10.5;
// 問3
char alf_a = 'X';
// 問4
printf("%d %f %c", num_a, dec_a, alf_a);
return 0;
}出力結果

整数値型の変数 num_bを宣言し、100で初期化しましょう
#include <stdio.h>
int main() {
// 問1
int num_a = 10;
// 問2(float dec_a = 10.5;も正解)
double dec_a = 10.5;
// 問3
char alf_a = 'X';
// 問4
printf("%d %f %c", num_a, dec_a, alf_a);
// 問5
int num_b = 100;
return 0;
}浮動小数点型の変数 dec_bを宣言し、105.005 で初期化しましょう
#include <stdio.h>
int main() {
// 問1
int num_a = 10;
// 問2(float dec_a = 10.5;も正解)
double dec_a = 10.5;
// 問3
char alf_a = 'X';
// 問4
printf("%d %f %c", num_a, dec_a, alf_a);
// 問5
int num_b = 100;
// 問6
double dec_a = 105.005;
return 0;
}文字型の変数alf_bを宣言し、Aで初期化しましょう
#include <stdio.h>
int main() {
// 問1
int num_a = 10;
// 問2(float dec_a = 10.5;も正解)
double dec_a = 10.5;
// 問3
char alf_a = 'X';
// 問4
printf("%d %f %c", num_a, dec_a, alf_a);
// 問5
int num_b = 100;
// 問6
double dec_a = 105.005;
// 問7
char alf_b = 'A';
return 0;
}変数num_b、dec_b、alf_bをそれぞれコンソールに表示しましょう
#include <stdio.h>
int main() {
// 問1
int num_a = 10;
// 問2(float dec_a = 10.5;も正解)
double dec_a = 10.5;
// 問3
char alf_a = 'X';
// 問4
printf("%d %f %c\n", num_a, dec_a, alf_a);
// 問5
int num_b = 100;
// 問6
double dec_b = 105.005;
// 問7
char alf_b = 'A';
// 問8
printf("%d %f %c", num_b, dec_b, alf_b);
return 0;
}出力結果

num_aにnum_bを代入しましょう
#include <stdio.h>
int main() {
// 問1
int num_a = 10;
// 問2(float dec_a = 10.5;も正解)
double dec_a = 10.5;
// 問3
char alf_a = 'X';
// 問4
printf("%d %f %c\n", num_a, dec_a, alf_a);
// 問5
int num_b = 100;
// 問6
double dec_b = 105.005;
// 問7
char alf_b = 'A';
// 問8
printf("%d %f %c", num_b, dec_b, alf_b);
// 問9
num_a = num_b;
return 0;
}dec_aにdec_bを代入しましょう
#include <stdio.h>
int main() {
// 問1
int num_a = 10;
// 問2(float dec_a = 10.5;も正解)
double dec_a = 10.5;
// 問3
char alf_a = 'X';
// 問4
printf("%d %f %c\n", num_a, dec_a, alf_a);
// 問5
int num_b = 100;
// 問6
double dec_b = 105.005;
// 問7
char alf_b = 'A';
// 問8
printf("%d %f %c\n", num_b, dec_b, alf_b);
// 問9
num_a = num_b;
// 問10
dec_a = dec_b;
return 0;
}alf_aにalf_bを代入しましょう
#include <stdio.h>
int main() {
// 問1
int num_a = 10;
// 問2(float dec_a = 10.5;も正解)
double dec_a = 10.5;
// 問3
char alf_a = 'X';
// 問4
printf("%d %f %c\n", num_a, dec_a, alf_a);
// 問5
int num_b = 100;
// 問6
double dec_b = 105.005;
// 問7
char alf_b = 'A';
// 問8
printf("%d %f %c\n", num_b, dec_b, alf_b);
// 問9
num_a = num_b;
// 問10
dec_a = dec_b;
// 問11
alf_a = alf_b;
return 0;
}変数num_a、dec_a、alf_aをそれぞれコンソールに表示しましょう
#include <stdio.h>
int main() {
// 問1
int num_a = 10;
// 問2(float dec_a = 10.5;も正解)
double dec_a = 10.5;
// 問3
char alf_a = 'X';
// 問4
printf("%d %f %c\n", num_a, dec_a, alf_a);
// 問5
int num_b = 100;
// 問6
double dec_b = 105.005;
// 問7
char alf_b = 'A';
// 問8
printf("%d %f %c\n", num_b, dec_b, alf_b);
// 問9
num_a = num_b;
// 問10
dec_a = dec_b;
// 問11
alf_a = alf_b;
// 問12
printf("%d %f %c\n", num_a, dec_a, alf_a);
return 0;
}出力結果


