授業/C言語基礎/変数
をテンプレートにして作成
開始行:
コンピューターが記憶しているデータの一つ一つに名前をつけ...
*型 [#h3a3985e]
記憶するデータの種類によって、コンピューターが用意しなけ...
このデータの種類のことを変数の''型''といいます。
*int型 [#s64e4e4f]
''int型''は、''整数''を記憶するためのデータ型です。
16ビットCPUでは16ビット(2バイト)、32ビットCPUでは32ビッ...
ただし、64ビットCPUでは、32ビットCPUとの互換性を保つため...
32ビットの2進数では、[math]2^{32}[/math]通り([math]4,294...
整数には負の数も含まれますので、先頭のビットを符号ビット...
つまり、先頭の符号ビットが1である[math]2^{16}[/math]乗個...
残り[math]2^{16}[/math]個のパターンがありますが、「すべて...
したがって、32ビットint型で表すことができる数は、[math]-2...
*double型 [#s2f57d8e]
''double型''は、''小数''を記憶するためのデータ型です。
コンピューターで小数を表すのには、''浮動小数点数''という...
double型は、''倍精度浮動小数点数''といい、64ビットで表さ...
浮動小数点数は、[math](-1)^{S} \times M \times 2^E[/math]...
ここで、[math]S[/math]は符号、[math]M[/math]は仮数、[math...
わかりやすいように10進数で考えると、10進数の[math]0.00123...
倍精度浮動小数点数では、64ビットが以下のように使われます。
-符号部1ビット(正のとき[math]0[/math]、負のとき[math]1[/...
-指数部11ビット(実際の指数から[math]1,023[/math]を引いた...
-仮数部52ビット(仮数を2進数1.xxxという形にして、その小数...
double型で表すことができる数は、負の数は[math]-1.797693 \...
浮動小数点数についての詳しいことは、計算機アーキテクチャ...
*宣言 [#a98c893a]
変数をCプログラムで使うには、最初に、どの型の変数をどのよ...
C言語では、以下のように変数を宣言します。
型 変数名;
たとえば、int型の変数をiという名前で使用することを宣言す...
#geshi(c){{
#include <stdio.h>
int main(void) {
int i;
return 0;
}
}}
また、double型の変数をdという名前で使用することを宣言する...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d;
return 0;
}
}}
変数名をコンマ '','' で区切ることで、同じ型の複数の変数を...
型 変数名1, 変数名2, ...;
たとえば、int型の変数x, y, zを宣言するときは、次のように...
#geshi(c){{
#include <stdio.h>
int main(void) {
int x, y, z;
return 0;
}
}}
しかし、型が異なるときは、一つの文では宣言できません。
たとえば、int型の変数iとdouble型の変数dを宣言するときは、...
#geshi(c){{
#include <stdio.h>
int main(void) {
int i;
double d;
return 0;
}
}}
*代入 [#xf2f4f91]
変数に具体的な値を入れることを、''代入''といいます。
C言語では、以下のようにイコール ''='' を使って値を変数に...
変数名 = 代入する値;
たとえば、int型の変数iに3を代入するときは、次のようになり...
#geshi(c){{
#include <stdio.h>
int main(void) {
int i;
i = 3;
return 0;
}
}}
また、double型の変数に[math]-12.3[/math]を代入するときは...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d;
d = -12.3;
return 0;
}
}}
*初期化 [#n50bbc05]
変数を宣言するときに値を代入することができ、これを''初期...
C言語では、以下のように変数を初期化します。
型 変数名 = 代入する値;
たとえば、int型の変数iを宣言し、同時に[math]3[/math]を代...
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 3;
return 0;
}
}}
また、double型の変数dを宣言し、同時に[math]-12.3[/math]を...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = -12.3;
return 0;
}
}}
同じ型であれば、複数の変数を一度に宣言して初期化すること...
型 変数名1 = 代入する値1, 変数名2 = 代入する値2, ...;
たとえば、int型の変数x, y, zを宣言し、同時にそれぞれに[ma...
#geshi(c){{
#include <stdio.h>
int main(void) {
int x = 1, y = 2, z = 3;
return 0;
}
}}
*初期化しないときの変数の値 [#e3f6c3e8]
変数を宣言だけして初期化しないとき、変数の値がどうなるか...
総合情報センターのLinuxサーバーでは、int型とdouble型の変...
その変数を記憶するための場所(メモリー)がこのプログラム...
*printf命令による表示 [#a669a953]
printf命令を使って変数の値を画面に出力(表示)するときは...
例えば、int型の変数の値を表示するときは ''%d'' を使い、次...
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 3;
printf("i = %d\n", i);
return 0;
}
}}
このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
i = 3
}}
double型の変数の値を小数形式で出力するときは ''%f'' を使...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = -12.3;
printf("d = %f\n", d);
return 0;
}
}}
このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
d = -12.300000
}}
double型の変数の値を指数形式で出力するときは ''%e'' を使...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = -12.3;
printf("d = %e\n", d);
return 0;
}
}}
このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
d = -1.230000e+01
}}
eの後に続く数が指数を表していて、[math]-1.23 \times 10^{+...
複数の変数の値を出力することもできます(プログラム4)。
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 3;
double d = -12.3;
printf("i = %d, d = %f\n", i, d);
return 0;
}
}}
このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
i = 3, d = -12.3
}}
printf命令の名前のfはフォーマット (format) を表し、printf...
**演習1 [#a7bfb838]
上のプログラム1, 2, 3, 4を作成し、実行せよ。
*暗黙的型変換 [#u1d9c695]
ある型の変数を別の型の変数に代入すると、変数の型が暗黙的...
たとえば、小数の値をint型の変数に代入すると、double型から...
つまり、小数点以下が切り捨てられます。
(切り捨てではなく四捨五入するプログラミング言語もありま...
次のプログラムについて考えてみましょう(プログラム5)。
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 1.23, j = 9.87;
printf("i = %d, j = %d\n", i, j);
return 0;
}
}}
これを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
i = 1, j = 9
}}
整数の値をdouble型の変数に代入すると、int型からdoule型に...
**演習2 [#y6b84645]
プログラム5を作成し、実行結果を確認せよ。
また、整数の値をdouble型の変数に代入して出力するプログラ...
。
----
*オーバーフロー(おまけ) [#qc5fb559]
32ビットint型で表現できる数は、[math]-2,147,483,648[/math...
32ビットint型の変数に[math]-2,147,483,648[/math]より小さ...
これを''オーバーフロー''といいます。
たとえば、32ビットint型の変数に上限より 1 だけ大きい数を...
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 2147483648;
printf("i = %d\n", i);
return 0;
}
}}
これをコンパイルすると、次のようなメッセージが出ます。
#geshi(sh){{
luna% gcc int.c
int.c: In function 'main':
int.c:4: 警告: 式の整数がオーバーフローしました
}}
これは''警告''であって''エラー''ではないので、実行可能フ...
そこで、このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
i = -2147483648
}}
このように、プログラム実行時にオーバーフローが発生しても...
負の数は「2の補数」という形で表現され、先頭ビットが 1 の...
32ビットのint型で表現できる最も大きな数を2進数で表すと次...
01111111 11111111 11111111 11111111
10進数 [math]2,147,483,648[/math] は、これに 1 を加えた数...
10000000 00000000 00000000 00000000
これの値は先頭ビットが 1 なので、コンピューターはこれを負...
このため、画面には次のように出力されます。
-2147483648
2の補数についての詳しいことは、計算機アーキテクチャーにつ...
**演習3 [#j38282c6]
オーバーフローが生じるプログラムを作成し、実行結果を確認...
*アンダーフロー(おまけ) [#z6206df9]
double型で表現できる数は、負の数は[math]-1.79769313486231...
double型の変数に[math]-1.79769313486231570 \times 10^{308...
これを''アンダーフロー''といいます。
たとえば、double型の変数に正の数の下限の10分の1の数を代入...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = 0.000000000000000000000000000000000000000000...
printf("d = %e\n", d);
return 0;
}
}}
画面に収まりませんが、プログラムを選択してコピーすれば実...
これをコンパイルしてもオーバーフローのときのような警告は...
#geshi(sh){{
luna% a.out
d = 0.000000e+00
}}
オーバーフローと同じように、プログラム実行時にアンダーフ...
**演習4 [#ka7bb1e0]
アンダーフローが生じるプログラムを作成し、実行結果を確認...
----
*まとめ [#lf8cb7fe]
''変数''は、コンピューターに記憶されるデータに名前をつけ...
変数には''型''があり、整数を記憶する変数は''int型''、小数...
変数は、使う前に''宣言''しなければなりません。
変数に値を記憶させることを''代入''といいます。
また、変数を宣言するときに値を代入することを''初期化''と...
変数の値を出力するには、printf命令の文字列の中に''変換指...
int型の値を出力するときの変換指定子は ''%d''、double型の...
変数に型が異なる値を代入すると、自動的に型が変換されます。
int型の値をdouble型に代入しても値は変わりませんが、double...
これを''暗黙的型変換''といいます。
----
*練習問題 [#va5e4ad3]
変数の練習問題は[[こちら>/授業/C言語基礎/変数/練習問題]]。
終了行:
コンピューターが記憶しているデータの一つ一つに名前をつけ...
*型 [#h3a3985e]
記憶するデータの種類によって、コンピューターが用意しなけ...
このデータの種類のことを変数の''型''といいます。
*int型 [#s64e4e4f]
''int型''は、''整数''を記憶するためのデータ型です。
16ビットCPUでは16ビット(2バイト)、32ビットCPUでは32ビッ...
ただし、64ビットCPUでは、32ビットCPUとの互換性を保つため...
32ビットの2進数では、[math]2^{32}[/math]通り([math]4,294...
整数には負の数も含まれますので、先頭のビットを符号ビット...
つまり、先頭の符号ビットが1である[math]2^{16}[/math]乗個...
残り[math]2^{16}[/math]個のパターンがありますが、「すべて...
したがって、32ビットint型で表すことができる数は、[math]-2...
*double型 [#s2f57d8e]
''double型''は、''小数''を記憶するためのデータ型です。
コンピューターで小数を表すのには、''浮動小数点数''という...
double型は、''倍精度浮動小数点数''といい、64ビットで表さ...
浮動小数点数は、[math](-1)^{S} \times M \times 2^E[/math]...
ここで、[math]S[/math]は符号、[math]M[/math]は仮数、[math...
わかりやすいように10進数で考えると、10進数の[math]0.00123...
倍精度浮動小数点数では、64ビットが以下のように使われます。
-符号部1ビット(正のとき[math]0[/math]、負のとき[math]1[/...
-指数部11ビット(実際の指数から[math]1,023[/math]を引いた...
-仮数部52ビット(仮数を2進数1.xxxという形にして、その小数...
double型で表すことができる数は、負の数は[math]-1.797693 \...
浮動小数点数についての詳しいことは、計算機アーキテクチャ...
*宣言 [#a98c893a]
変数をCプログラムで使うには、最初に、どの型の変数をどのよ...
C言語では、以下のように変数を宣言します。
型 変数名;
たとえば、int型の変数をiという名前で使用することを宣言す...
#geshi(c){{
#include <stdio.h>
int main(void) {
int i;
return 0;
}
}}
また、double型の変数をdという名前で使用することを宣言する...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d;
return 0;
}
}}
変数名をコンマ '','' で区切ることで、同じ型の複数の変数を...
型 変数名1, 変数名2, ...;
たとえば、int型の変数x, y, zを宣言するときは、次のように...
#geshi(c){{
#include <stdio.h>
int main(void) {
int x, y, z;
return 0;
}
}}
しかし、型が異なるときは、一つの文では宣言できません。
たとえば、int型の変数iとdouble型の変数dを宣言するときは、...
#geshi(c){{
#include <stdio.h>
int main(void) {
int i;
double d;
return 0;
}
}}
*代入 [#xf2f4f91]
変数に具体的な値を入れることを、''代入''といいます。
C言語では、以下のようにイコール ''='' を使って値を変数に...
変数名 = 代入する値;
たとえば、int型の変数iに3を代入するときは、次のようになり...
#geshi(c){{
#include <stdio.h>
int main(void) {
int i;
i = 3;
return 0;
}
}}
また、double型の変数に[math]-12.3[/math]を代入するときは...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d;
d = -12.3;
return 0;
}
}}
*初期化 [#n50bbc05]
変数を宣言するときに値を代入することができ、これを''初期...
C言語では、以下のように変数を初期化します。
型 変数名 = 代入する値;
たとえば、int型の変数iを宣言し、同時に[math]3[/math]を代...
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 3;
return 0;
}
}}
また、double型の変数dを宣言し、同時に[math]-12.3[/math]を...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = -12.3;
return 0;
}
}}
同じ型であれば、複数の変数を一度に宣言して初期化すること...
型 変数名1 = 代入する値1, 変数名2 = 代入する値2, ...;
たとえば、int型の変数x, y, zを宣言し、同時にそれぞれに[ma...
#geshi(c){{
#include <stdio.h>
int main(void) {
int x = 1, y = 2, z = 3;
return 0;
}
}}
*初期化しないときの変数の値 [#e3f6c3e8]
変数を宣言だけして初期化しないとき、変数の値がどうなるか...
総合情報センターのLinuxサーバーでは、int型とdouble型の変...
その変数を記憶するための場所(メモリー)がこのプログラム...
*printf命令による表示 [#a669a953]
printf命令を使って変数の値を画面に出力(表示)するときは...
例えば、int型の変数の値を表示するときは ''%d'' を使い、次...
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 3;
printf("i = %d\n", i);
return 0;
}
}}
このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
i = 3
}}
double型の変数の値を小数形式で出力するときは ''%f'' を使...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = -12.3;
printf("d = %f\n", d);
return 0;
}
}}
このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
d = -12.300000
}}
double型の変数の値を指数形式で出力するときは ''%e'' を使...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = -12.3;
printf("d = %e\n", d);
return 0;
}
}}
このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
d = -1.230000e+01
}}
eの後に続く数が指数を表していて、[math]-1.23 \times 10^{+...
複数の変数の値を出力することもできます(プログラム4)。
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 3;
double d = -12.3;
printf("i = %d, d = %f\n", i, d);
return 0;
}
}}
このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
i = 3, d = -12.3
}}
printf命令の名前のfはフォーマット (format) を表し、printf...
**演習1 [#a7bfb838]
上のプログラム1, 2, 3, 4を作成し、実行せよ。
*暗黙的型変換 [#u1d9c695]
ある型の変数を別の型の変数に代入すると、変数の型が暗黙的...
たとえば、小数の値をint型の変数に代入すると、double型から...
つまり、小数点以下が切り捨てられます。
(切り捨てではなく四捨五入するプログラミング言語もありま...
次のプログラムについて考えてみましょう(プログラム5)。
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 1.23, j = 9.87;
printf("i = %d, j = %d\n", i, j);
return 0;
}
}}
これを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
i = 1, j = 9
}}
整数の値をdouble型の変数に代入すると、int型からdoule型に...
**演習2 [#y6b84645]
プログラム5を作成し、実行結果を確認せよ。
また、整数の値をdouble型の変数に代入して出力するプログラ...
。
----
*オーバーフロー(おまけ) [#qc5fb559]
32ビットint型で表現できる数は、[math]-2,147,483,648[/math...
32ビットint型の変数に[math]-2,147,483,648[/math]より小さ...
これを''オーバーフロー''といいます。
たとえば、32ビットint型の変数に上限より 1 だけ大きい数を...
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 2147483648;
printf("i = %d\n", i);
return 0;
}
}}
これをコンパイルすると、次のようなメッセージが出ます。
#geshi(sh){{
luna% gcc int.c
int.c: In function 'main':
int.c:4: 警告: 式の整数がオーバーフローしました
}}
これは''警告''であって''エラー''ではないので、実行可能フ...
そこで、このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
i = -2147483648
}}
このように、プログラム実行時にオーバーフローが発生しても...
負の数は「2の補数」という形で表現され、先頭ビットが 1 の...
32ビットのint型で表現できる最も大きな数を2進数で表すと次...
01111111 11111111 11111111 11111111
10進数 [math]2,147,483,648[/math] は、これに 1 を加えた数...
10000000 00000000 00000000 00000000
これの値は先頭ビットが 1 なので、コンピューターはこれを負...
このため、画面には次のように出力されます。
-2147483648
2の補数についての詳しいことは、計算機アーキテクチャーにつ...
**演習3 [#j38282c6]
オーバーフローが生じるプログラムを作成し、実行結果を確認...
*アンダーフロー(おまけ) [#z6206df9]
double型で表現できる数は、負の数は[math]-1.79769313486231...
double型の変数に[math]-1.79769313486231570 \times 10^{308...
これを''アンダーフロー''といいます。
たとえば、double型の変数に正の数の下限の10分の1の数を代入...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = 0.000000000000000000000000000000000000000000...
printf("d = %e\n", d);
return 0;
}
}}
画面に収まりませんが、プログラムを選択してコピーすれば実...
これをコンパイルしてもオーバーフローのときのような警告は...
#geshi(sh){{
luna% a.out
d = 0.000000e+00
}}
オーバーフローと同じように、プログラム実行時にアンダーフ...
**演習4 [#ka7bb1e0]
アンダーフローが生じるプログラムを作成し、実行結果を確認...
----
*まとめ [#lf8cb7fe]
''変数''は、コンピューターに記憶されるデータに名前をつけ...
変数には''型''があり、整数を記憶する変数は''int型''、小数...
変数は、使う前に''宣言''しなければなりません。
変数に値を記憶させることを''代入''といいます。
また、変数を宣言するときに値を代入することを''初期化''と...
変数の値を出力するには、printf命令の文字列の中に''変換指...
int型の値を出力するときの変換指定子は ''%d''、double型の...
変数に型が異なる値を代入すると、自動的に型が変換されます。
int型の値をdouble型に代入しても値は変わりませんが、double...
これを''暗黙的型変換''といいます。
----
*練習問題 [#va5e4ad3]
変数の練習問題は[[こちら>/授業/C言語基礎/変数/練習問題]]。
ページ名: