「変数」のページです
ゲームなどを作るのであれば変数は必要不可欠でしょう
#include <stdio.h>
int main()
{
int a = 1;
printf("a = %d です\n",a);
return 0;
}
実行結果
imageプラグインエラー : ご指定のURLは存在しないか、サポートしていません。
この場合、「a」が変数にあたります
変数
あるデータを保管しておいて、使いたいときに呼び出せるもの
変数の利点は「自分の分かりやすい名前を付けることが出来る」ということです(但し特殊文字や定数は駄目です)
流れは、
「int a = 1;」で変数を宣言し(簡単に言うと作るということです)
まず「int a = 1;」から見ていきます
もう気付いてるかもしれませんが
ここでは「a」を宣言するだけでなく「a」に「1」を代入(保管するようなことです)しています
なので
C言語では「=」は等号ではなく「代入」を意味します
最初の「int」は「データ型」と言い、その変数の「データ型」を指定します
なぜそんなことをしなければいけないかと言うと実数(小数)より整数の方が単純であり、処理がはやい、というような事があるからです
つまり、整数のデータしか扱わないのに、実数のデータ型を使う、ということになると処理の無駄になってしまう、と言うことです
変数の宣言は
です
あれ?と思ったかもしれません
例のソースコードでは「データ型 変数名」のあとに続き、つまり代入部分があります
そう、変数は宣言と代入を同時にできるのです
その場合は「代入」とは言わず、「初期化」といいます
また、変数を同時に何個か宣言するときは
とします
データ型(VisualStudioWiki引用)
| データ型 |
サイズ |
意味 |
範囲 |
| bool |
1Byte |
論理型 |
true(0以外) / false(0) |
| char |
1Byte |
文字型 |
-128 ~ 127 |
| unsigned char |
1Byte |
符号なし文字型 |
0 ~ 255 |
| wchar_t |
2Byte |
ワイド文字型 |
- |
| short (int) |
2Byte |
短長整数型 |
-32768 ~ 32767 |
| unsigned short (int) |
2Byte |
符号なし短長整数型 |
0 ~ 65535 |
| int |
4Byte |
整数型 |
-2147486948 ~ 2147483647 |
| unsigned (int) |
4Byte |
符号なし整数型 |
0 ~ 4294967295 |
| long (int) |
4Byte |
長整数型 |
-2147486948 ~ 2147483647 |
| unsigned long (int) |
4Byte |
符号なし長整数型 |
0 ~ 4294967295 |
| float |
4Byte |
単精度浮動小数点型 |
-3.4E+38 ~ 3.4E+38 |
| double |
8Byte |
倍精度実数 |
-1.7E+308 ~ 1.7E+308 |
| long double |
8Byte |
拡張精度浮動小数点型 |
-1.7E+308 ~ 1.7E+308 |
| __int8 |
1Byte |
拡張整数型 |
-128 ~ 127 |
| __int16 |
2Byte |
拡張整数型 |
-32768 ~ 32767 |
| __int32 |
4Byte |
拡張整数型 |
-2147483648 ~ 2147483647 |
| __int64 |
8Byte |
拡張整数型 |
-9223372036854775808 ~ 9223372036854775807 |
| void |
0Byte |
空のデータ型 |
- |
次に「printf関数」を見てみます
printfで画面に文字を出力しているのですが、
なぜ「a = %d」と書いてあるのに画面では「a = 1」となっているのでしょうか
理由は「%d」にあります
「%d」のようなものを「書式文字」といい、文字列に変数などのデータを入れることが出来ます
この場合の書き方は
これによって書式文字のところに変数が出力されます
また、2つ以上の変数を出力したいときは
printf(" 書式文字1 書式文字2・・・",変数1,変数2・・・);
とします
書式文字
| 書式文字 |
内容 |
| %d・%i |
10進数の整数 |
| %f |
10進数の実数 |
| %u |
符号無し10進数の整数 |
| %o |
8進数の整数 |
| %x |
16進数の整数 |
| %c |
文字コードに対応した文字 |
| %e |
指数 |
| %s |
文字列 |
| %p |
メモリアドレス |
では、ソースコードをこう書き換えてください
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
b = a;
printf("b = a = %d です\n",b);
return 0;
}
実行結果
imageプラグインエラー : ご指定のURLは存在しないか、サポートしていません。
順番に追っていきます
最初に「int a = 1;」でデータが「1」の変数aを、
「int b = 2;」でデータが「2」の変数bを宣言、初期化します
次の「b = a;」がポイントです
まず、これによって
「右側の値」が「左側の変数」に代入されている、ということを押さえて下さい
今回は右側の値というのは「変数a」にあたります
つまり変数は数字と同じように扱えるという事です
ポイントを見る前にprintfのところを見てみましょう
「printf("b = a = %d です\n",b);」
これは「b = a = bの値」と、画面に出力していることになります
画面には「b = a = 1」と書いてあるので
bの値が「1」ということです
bは初期化したときは内容が2だったのに何で?!
というと、その後に書いてある「b = a;」によって「b」に「aの値」、すなわち1が代入されているわけですが、
初期化したときの2はどこにいったんだ、ということになります
なんと、「b = a;」をしたとき、「bの値」は2が上書きされて1になったんです
代入と言うのは今まであった値を上書きして新しい値を入れる、ということが分かったと思います
変数には、有効範囲があります
それは、スコープ(中カッコの中)です
サンプル
例
if()
{
int a;
if{
int b;
} //変数「b」の有効範囲はここまで
} //変数「a」の有効範囲はここまで
最終更新:2011年11月08日 18:52