C初級:変数名のつけ方

C言語初級カテゴリのロゴ画像 C言語初級

宮崎駿が映画化した小説「ゲド戦記」の中で、主人公のゲドが、

「お前のまことの名はなんだ?」

と問われる場面があります。

本当の名前をその相手に伝えてしまうと、心を乗っ取られ相手に操られてしまうシーンだったと記憶しています。

C言語プログラミングにおいて変数名は ”まことの名” です。自分でつけた変数名を使うことで自身の作ったプログラムを操ることができるようになります。

C言語で変数名に使って良い文字一覧

C言語では以下の63文字を変数名として使って良いことになっています。

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

基本は半角文字英文字azAZ数字09、記号は「_」のアンダースコア(アンダーバー)の全63文字

上記63文字を使えばどんな変数名でも良いか?と言うとそうではありません。
変数名のつけ方にはルールがあります。

変数名のルール

変数名をつける際のルールは大きく分けて3つあります。

1文字目は英文字またはアンダースコア

先頭文字は、必ずアルファベットまたはアンダースコアでなければなりません。
先頭に数字は使えません

先頭文字に使える文字:azAZ_

2文字目以降は、英数字、またはアンダースコア

2文字目以降は、数字も使えるようになります。要するに63文字全て使えます。

2文字目以降に使える文字:azAZ09_

ただし予約後は変数名に使えない

予約語(キーワード)は、もともとC言語でプログラミングに利用できる関数名やif, forなどの構文で利用できる文字列を指します。

以下の32種類の文字列は、C言語で予約語と定義されている為、変数名に使えません。

autobreakcasechar
constcontinuedefaultdo
doubleelseenumextern
floatforgotoif
intlongregisterreturn
shortsignedsizeofstatic
structswitchtypedefunion
unsignedvoidvolatilewhile
ANSI Cの予約語

予約語について詳しくは以下をご覧ください。

変数名の実例

変数名を実際の例で示します。

以下は変数名としてOKです

i, hello, a123, _hoge, _99, A_Z, printf2, int_, int_, EOF1, _NULL

ちなみに上記例にはありませんが、__cat__などのアンダーバー2つ連続__が入ったものも変数名としてOKです。

以下は変数名としてNGです。

1a, for, if, printf, <abc>, NULL, EOF, @hoge, abc!

変数名は後から見たとき分かりやすいものをつける

後から見たとき何の目的で使った変数なのか分かるような変数名が一番いいと思います。

int a, b, c;

a = 500;
b = 3;
c = a * b;
printf("合計 %d円\n", c);

int tanka, kosu, gokei;

tanka = 500;
kosu = 3;
gokei = tanka * kosu;
printf("合計 %d円\n", gokei);

よく英語が得意でもないのに英単語で変数名を作成したりする方(=管理人!)も見受けられますが、あまり無理せず日本人なら上記のようにローマ字で変数名を考えるのも一つの方法だと思います。(後から見たとき自分が一番分かりやすいので…本当にそう思います!)

初心者が変数名で間違えやすい例

プログラミングを始めたばかりの学生が作ったプログラムでよく見かける間違い例として、英字の大文字と小文字の区別なく変数名をつけていることが挙げられます。

以下のプログラムでは7行目でコンパイルエラーが出ます。

#include <stdio.h>

int main(void)
{
	int A = 1000;
	
	printf("%d\n", a);

	return 0;
}

上記の、英大文字の A と英小文字の a は別の変数名として扱われます。7行目でprintf関数で利用している変数 a は宣言していないため使用できません。

よって以下のプログラムだと問題なく動作します。

#include <stdio.h>

int main(void)
{
	int a, A;
	
	a = 10;
	A = 1000;

	printf("a = %d\n", a);
	printf("A = %d\n", A);

	return 0;
}

同じように変数 tomato と変数 TOMATO は別の変数になります。

Windows10などはファイル名のhoge.txtとHOGE.txtが同じファイルとして扱われてしまうため、変数名でも大文字と小文字の区別がない、と考えてしまう人もいるのではないかと思います。プログラミングにおいては大文字と小文字は区別して考えてください

同じ処理を持つプログラムでも作る人によって色々な処理方法が生まれるように、変数名のつけ方も人により様々。面白いものですね。

以上、C言語変数名のつけ方でした。

コメント

タイトルとURLをコピーしました