6日でできる 新C言語入門|変数名のNG例と命名のコツ

読みやすい変数名は、分かりやすいプログラムの第一歩。
C言語の命名ルールとコツを押さえて、迷わないコードを書けるようになろう。

C言語では、変数は値を入れておくための大切な入れ物です。けれども、変数はただ使えればよいわけではありません。どのような名前を付けるかによって、プログラムの読みやすさや分かりやすさが大きく変わります。

たとえば、score や total_price のように意味が伝わる名前なら、あとからコードを見返したときにも内容を理解しやすくなります。一方で、a や x1 のように意味が分かりにくい名前ばかり使っていると、コードを読むたびに何の値なのか考え直すことになってしまいます。

さらに、C言語では変数名に使える文字や、使ってはいけない名前にルールがあります。先頭に数字は使えない、予約語は使えない、記号は基本的に使えない、といった決まりを知らないまま書いてしまうと、コンパイルエラーの原因になります。

また、変数名は見た目だけでなく、代入や演算を行うときにも大切です。意味のある名前が付いていると、どの値を増やしているのか、何を合計しているのか、どの数値を更新しているのかがすぐに分かります。これは、バグを防ぐうえでもとても重要です。

ここでは、C言語における変数名の基本ルール、避けるべきNG例、分かりやすい命名のコツ、さらに代入や演算での使い方まで、サンプルプログラムを交えながらやさしく解説していきます。

変数名には守るべき基本ルールがある

C言語では、変数名を自由に付けられるように見えて、実際にはいくつかの決まりがあります。まずは、この基本ルールを押さえておきましょう。

ルール内容OK例NG例
使用できる文字半角英字、数字、アンダースコアを使うvalue1, _count, student_scorehello!, num@data
最初の文字英字またはアンダースコアで始めるscore, _temp1score
大文字・小文字区別されるtotal, Total, TOTAL同じ名前としては扱われない
予約語C言語で特別な意味を持つ単語は使えないcount, totalint, for, return
記号の使用ハイフンや@などは使えないuser_namemy-name, data@1

ここで大切なのは、C言語の標準的な変数名には、英字、数字、アンダースコアを使うということです。特に初心者のうちは、この3種類だけを使うと覚えておくと安心です。

また、変数名の先頭に数字は使えません。たとえば 1st_score のような名前は一見分かりやすそうですが、C言語ではエラーになります。先頭は英字かアンダースコアにする必要があります。

大文字と小文字が区別される点も大事です。score と Score は別の変数です。人が見ると似ていますが、C言語では違う名前として扱われます。そのため、途中で大文字と小文字がぶれないようにすることが重要です。

図:変数名に使えるもの・使えないもの

この図から分かること

この図から分かるのは、変数名には見た目の分かりやすさだけでなく、C言語として守るべき文法上のルールがあるということです。

score や total_price のような名前は、ルールに合っていて意味も伝わりやすいので使いやすいです。一方で、1score のように数字から始まる名前や、my-name のようにハイフンを含む名前、for のような予約語は変数名として使えません。まずは、使える名前と使えない名前の違いをしっかり意識することが大切です。

予約語は変数名に使えない

C言語には、もともと特別な意味を持っている単語があります。これを予約語と呼びます。予約語は、文法の中で役割が決まっているため、変数名として使うことはできません。

代表的な予約語をいくつか見てみましょう。

予約語の例用途
int整数型を表す
double実数型を表す
char文字型を表す
if条件分岐
while繰り返し処理
for繰り返し処理
return関数の終了と値の返却

たとえば、int int = 5; のような書き方はできません。最初の int は型名ですが、2つ目の int を変数名として使おうとしているため、文法として成立しません。

予約語はC言語にとって大事な言葉なので、変数名としては使わないと覚えておきましょう。もし名前に迷ったら、その単語が型名や制御文として使われていないかを確認すると安心です。

読みやすい変数名は、意味が伝わる名前

ルールを守るだけなら、a や b のような短い名前でも変数名として使えます。けれども、実際のプログラムでは、何を表しているのかが分かる名前を付けることが大切です。

分かりにくい例分かりやすい例理由
aage年齢を表すと分かる
xprice価格だと分かる
ycount個数だと分かる
ztotal_score合計点だと分かる
dday日付や日数を表すと分かる

たとえば、price = price + tax; のようなコードなら、価格に税金を加えているのだと読み取りやすいです。一方で、x = x + y; だと、何を加えているのかがすぐには分かりません。

変数名は、プログラムを書く自分のためだけでなく、あとから読む自分や他の人のためにもあります。読みやすい名前を付けることは、保守しやすいコードにつながります。

複数の単語を使うときは、つなぎ方をそろえる

少し長い意味を持つ変数名を付けたいときは、複数の単語を組み合わせることがあります。その場合は、つなぎ方をそろえると見やすくなります。

C言語の学習では、すべて小文字にしてアンダースコアで区切る書き方が分かりやすくておすすめです。

書き方特徴
小文字 + アンダースコアtotal_score, user_name見やすく初心者向け
キャメルケースtotalScore, userName他言語でもよく見かける
すべて大文字TOTAL_SCORE定数で使われることが多い

初心者のうちは、student_score や total_price のように、小文字とアンダースコアを使った書き方に統一するとよいでしょう。つなぎ方が毎回変わると、コード全体が読みにくくなります。

代入と演算では、分かりやすい変数名が特に役立つ

変数名の良し悪しは、代入や演算の場面で特に差が出ます。名前が分かりやすいと、どの値が変わっているのか、何を計算しているのかがひと目で分かります。

まずは、基本の代入と演算を行うサンプルプログラムを見てみましょう。

プロジェクト/ファイル名: Lesson16_1/main.c

#include <stdio.h>

int main(void) {
    // 現在の来店ポイントを宣言して初期化する
    int total_point = 20;

    // 今回追加されるポイントを宣言して初期化する
    int bonus_point = 4;

    // 合計ポイントに追加ポイントを加える
    total_point = total_point + bonus_point;

    // 更新後のポイントを表示する
    printf("現在の合計ポイントは%d点です。\n", total_point);

    return 0;
}

実行結果

現在の合計ポイントは24点です。

このプログラムでは、total_point という名前から合計ポイントであることが分かりますし、bonus_point から追加ポイントであることも読み取れます。もしこれが a と b だったら、計算の意味を理解するのに少し時間がかかってしまいます。

変数名が分かりやすいと、代入文の意味も自然に読みやすくなります。
total_point = total_point + bonus_point;
この1行だけでも、合計ポイントに追加ポイントを足して更新していることがはっきり分かります。

変数自身を使った演算はよく登場する

C言語では、変数の現在の値を使って、その変数自身を更新することがよくあります。たとえば、カウントを増やす、残高を減らす、合計値を積み上げる、といった処理です。

代表的な書き方は次のようなものです。

記述意味
a = a + 1;aの値を1増やす
b = b - 2;bの値を2減らす
c = c * 3;cの値を3倍にする
d = d / 2;dの値を2で割る
e = e % 5;eを5で割った余りにする

このような処理はとてもよく使われるため、C言語にはもっと簡潔に書ける代入演算子があります。

代入演算子使用例同じ意味
+=score += 5;score = score + 5;
-=stock -= 2;stock = stock - 2;
*=total *= 3;total = total * 3;
/=count /= 2;count = count / 2;
%=num %= 4;num = num % 4;

代入演算子を使うと、更新処理が短くなり、読みやすくなることがあります。特に、同じ変数に対して値を加える、引く、掛けるといった処理では便利です。

図:変数の更新と代入演算子

この図から分かること

この図から分かるのは、変数は一度値を入れたら終わりではなく、その後の演算によって何度も更新されるということです。

count の値が 2 から 5、さらに 10 へと変化していくように、C言語では変数の現在の値をもとに新しい値へ更新する処理がよく使われます。そのとき、+= や *= のような代入演算子を使うと、更新の意図が短く分かりやすく書けます。

代入演算子を使ったサンプルプログラム

次に、代入演算子を使って変数の値を更新するプログラムを見てみましょう。

プロジェクト/ファイル名: Lesson16_2/main.c

#include <stdio.h>

int main(void) {
    // 商品の在庫数を宣言して初期化する
    int stock_count = 3;

    // 初期状態を表示する
    printf("初期在庫数: %d\n", stock_count);

    // 入荷分を加える
    stock_count += 5;
    printf("入荷後の在庫数: %d\n", stock_count);

    // 2倍セットの確認用に在庫数を2倍する
    stock_count *= 2;
    printf("2倍した後の在庫数: %d\n", stock_count);

    return 0;
}

実行結果

初期在庫数: 3
入荷後の在庫数: 8
2倍した後の在庫数: 16

このプログラムでは、stock_count という名前が付いているため、在庫数を表していることがすぐに分かります。
stock_count += 5; は、在庫数に5を足すという意味です。
stock_count *= 2; は、在庫数を2倍にするという意味です。

もしここで変数名が x だったら、x += 5; や x *= 2; だけを見ても、何を操作しているのか分かりにくいです。代入演算子を使う場面ほど、変数名の意味が重要になります。

命名のNG例は、ルール違反と分かりにくさの2種類がある

変数名のNG例には、大きく分けて2つあります。ひとつは、C言語のルールに違反していて使えない名前です。もうひとつは、文法上は使えるけれど、分かりにくくて避けたい名前です。

まずは、文法上使えない名前を見てみましょう。

変数名なぜNGか
1st数字で始まっている
for予約語を使っている
my-valueハイフンが含まれている
num@data記号が含まれている
total score空白が含まれている

これらは、コンパイルエラーの原因になります。特に、ハイフンは引き算の記号として扱われるため、変数名には使えません。空白も区切りとして解釈されるので使えません。

一方で、次のような名前は文法上は使えても、避けたほうがよい例です。

変数名避けたい理由
a何を表しているか分かりにくい
x1意味が伝わりにくい
data範囲が広すぎて曖昧
tmp一時変数ならよいが多用すると分かりにくい
abc内容が想像できない

変数名は、単にエラーにならなければよいというものではありません。読む人が理解しやすいことも大事です。

命名のコツは、意味・長さ・一貫性

では、どうすればよい変数名を付けられるのでしょうか。ポイントはいくつかあります。

意味が分かる単語を使う

何の値なのかが分かる単語を選びましょう。たとえば、count、price、score、total、average などはよく使われます。

省略しすぎない

短すぎる名前は、打ちやすくても意味が伝わりません。d より day、p より price のほうが分かりやすいです。

長すぎる名前にも注意する

意味を伝えようとして長くしすぎると、逆に読みにくくなることがあります。適度な長さを意識しましょう。

つなぎ方をそろえる

たとえば、すべて小文字 + アンダースコアにするなど、スタイルを統一すると読みやすくなります。

命名のコツ
意味のある単語を使うuser_age, item_count
省略しすぎないday, data, total_score
長すぎないstudent_score はよいが、student_exam_japanese_total_score は長い
スタイルを統一するtotal_price, item_count, user_name

このようなルールをそろえておくと、コード全体にまとまりが出ます。チームで開発するときにも、とても役立ちます。

命名がよいと、演算の意味も読みやすくなる

変数名のよさは、単独で見たときだけでなく、式の中でこそ本領を発揮します。

たとえば、次の2つを比べてみると違いがよく分かります。

書き方読みやすさ
x = x + y;何を計算しているのか分かりにくい
total_score = total_score + bonus_score;合計点に加点していると分かる
a *= 2;何を2倍したのか分かりにくい
stock_count *= 2;在庫数を2倍したと分かる

よい命名は、コメントがなくてもある程度意味が伝わります。もちろん複雑な処理ではコメントも役立ちますが、まずは変数名だけで基本の意味が分かるようにするのが理想です。

図:よい変数名は処理の意味を読みやすくする

この図から分かること

この図から分かるのは、同じような代入や演算の式でも、変数名の付け方によって読みやすさが大きく変わるということです。

x や a のような短い名前では、計算の内容を推測しにくくなります。一方で、total_score や bonus_score、stock_count のように意味が分かる名前を使うと、式そのものが説明文のように読めます。命名は見た目の問題ではなく、プログラムの理解しやすさに直結する大切な要素です。

初心者が意識したい実践的な命名の考え方

初心者のうちは、変数名を付けるたびに迷うこともあると思います。そんなときは、次のように考えると決めやすくなります。

まず、その変数が何を入れる箱なのかを考えます。
年齢なら age、価格なら price、個数なら count、合計なら total です。

次に、その箱にどんな場面の値が入るのかを加えます。
商品価格なら item_price、試験の合計点なら total_score、在庫数なら stock_count のようにすると、より具体的になります。

最後に、全体の書き方をそろえます。
すべて小文字で、単語の間はアンダースコアで区切る、といったルールを自分の中で決めておくと、毎回迷いにくくなります。

変数名はプログラムの読みやすさを支える大事な要素

C言語では、変数名のルールを守ることがまず大前提です。そのうえで、意味が伝わる名前を付けることが、分かりやすいコードにつながります。

特に、代入や演算を行うときは、変数名がそのまま処理内容の説明になることがあります。
total_point = total_point + bonus_point;
stock_count += 5;
このような式が自然に読めるのは、変数名が役割をうまく表しているからです。

変数名の付け方は、小さなことに見えて、実はプログラム全体の品質に大きく関わります。読みやすい変数名は、ミスを減らし、デバッグしやすくし、あとから見直したときの理解も助けてくれます。

C言語の学習では、文法だけでなく、よい名前を付ける習慣も一緒に身につけていきましょう。変数名に少し気を配るだけで、コードはぐっと分かりやすくなります。