アットウィキロゴ

「変数」のページです


ゲームなどを作るのであれば変数は必要不可欠でしょう

#include <stdio.h>
 
int main()
{
	int a = 1;
 
	printf("a = %d です\n",a);
 
	return 0;
}
 

実行結果

imageプラグインエラー : ご指定のURLは存在しないか、サポートしていません。
この場合、「a」が変数にあたります

変数
あるデータを保管しておいて、使いたいときに呼び出せるもの

変数の利点は「自分の分かりやすい名前を付けることが出来る」ということです(但し特殊文字や定数は駄目です)

流れは、

「int a = 1;」で変数を宣言し(簡単に言うと作るということです)

printf関数」で画面に出力しています


まず「int a = 1;」から見ていきます

もう気付いてるかもしれませんが

ここでは「a」を宣言するだけでなく「a」に「1」を代入(保管するようなことです)しています

なのでC言語では「=」は等号ではなく「代入」を意味します


最初の「int」は「データ型」と言い、その変数の「データ型」を指定します

なぜそんなことをしなければいけないかと言うと実数(小数)より整数の方が単純であり、処理がはやい、というような事があるからです

つまり、整数のデータしか扱わないのに、実数のデータ型を使う、ということになると処理の無駄になってしまう、と言うことです

変数の宣言は
データ型 変数名;
です

あれ?と思ったかもしれません

例のソースコードでは「データ型 変数名」のあとに続き、つまり代入部分があります

そう、変数は宣言と代入を同時にできるのです

その場合は「代入」とは言わず、「初期化」といいます


また、変数を同時に何個か宣言するときは

int a,b,c … ;

とします

データ型(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」のようなものを「書式文字」といい、文字列に変数などのデータを入れることが出来ます

この場合の書き方は
printf(" 書式文字 " ,変数);

これによって書式文字のところに変数が出力されます

また、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