コメント機能

コメントとは

C言語をはじめとして、多くのプログラミング言語にはコメントという機能があります。

ソースコードにはプログラムを動かすための具体的な処理を書きます。
しかし、コメントで書かれた箇所はプログラムの動作には一切影響しません。

#include <stdio.h>

int main()
{
    //変数を宣言
    int kazu1, kazu2;

    //変数に値を代入
    kazu1 = 5;
    kazu2 = 4;

    //変数同士の加算結果を画面に表示
    printf("加算結果: %d", kazu1 + kazu2);

    //Enterキー入力があるまで停止
    getchar();
}

このサンプルコードには、「//」という、スラッシュ記号がふたつ連続している行が4つあります。
この「//」から始まる文字列がコメントです。
このコードを実行すると、普通に「加算結果: 9」と表示され、特にエラーになったり変わった動作になったりはしません。

コードをコンパイルする時はコメント行は除外してコンパイルされるため、上のコードは以下のコードと同じ動作になります。

#include <stdio.h>

int main()
{
    int kazu1, kazu2;
    kazu1 = 5;
    kazu2 = 4;
    printf("加算結果: %d", kazu1 + kazu2);
    getchar();
}

コメントは処理の内容をメモしたり、他のプログラマーに対してコードの説明や注意点などを知らせるために使われます。
複数人で一つのプログラムを開発する際には、他の人にコードの意図などを伝える重要な役割があります。
仕事としてプログラム開発を行う場合、コメントの書き方にもルールがあったりします。

自分一人だけでコーディングする場合にはあまり必要がないかもしれませんが、過去に作ったプログラムなどは自分でもどういう処理をしたのかを忘れてしまうことが結構あります。
複雑な処理を書いた場合はその処理の意味をコメントで残しておいた方が良いかもしれません。

ちなみに、「//」記号から改行までがコメント化されるので、行の途中からコメントを書くこともできます。

#include <stdio.h>

int main()
{
    int kazu;
    kazu = 5;
    kazu *= 4;
    printf("計算結果: %d", kazu); //計算結果を表示
    getchar(); //Enterキー入力があるまで停止
}

コメントアウト

コメント機能には、もう一つ便利な使い方があります。
例えば以下のように間違ったコードを書いてしまったとします。

#include <stdio.h>

int main()
{
    double syousuu;
    syousuu = 10 / 4;
    printf("%f", syousuu);
    getchar();
}

6行目のint型同士の割り算は小数点以下が切り捨てられてしまいます。
おそらく6行目が間違っていると思うが確信がない、あるいは処理が複雑で正しく修正できるかどうかちょっと自信がない場合には以下のように6行目を無効化してから修正コードを書きます。

#include <stdio.h>

int main()
{
    double syousuu;
    //syousuu = 10 / 4;
    syousuu = 10 / 4.0;
    printf("%f", syousuu);
    getchar();
}

コメントは、説明や注釈を入れるだけではなく、一度書いたコードを削除することなく無効にすることができます。
これをコメントアウトと言います。

間違いであろう箇所をコメントアウトしてから、すぐ下にでも修正コードを書き直します。
それで問題なく動作すればコメントアウトした行は削除して構いませんし、まだ上手く動かないのならばさらに修正を加えます。

サンプルコードのような単純なコードならばいちいちコメントアウトする必要はありませんが、何行にもわたる複雑なコードになってくると、やっぱり修正前のコードのほうが良かった、ということが多々あります。
「元に戻す」コマンド(アンドゥ)で削除前に戻すことはある程度できますが、無限に元には戻せませんし、何より一度Visual Studioを終了してしまうとアンドゥ履歴は消去されてしまいます。

実際に削除はせずにコメントアウトしておくことで、いつでも以前のコードに戻したり以前の処理を参考にすることができます。

ただし、何でもかんでもコメントアウトで残しておくとコードが見づらくなるので、必要のないコメントは削除しましょう。

複数行に渡るコメント

コメント行が複数に渡る場合、以下のように書くこともできます。

#include <stdio.h>

int main()
{
    /*
        複数行のコメント
        ここに何を書いてもコンパイル時には無視される
    */
    int kazu = 10;
    printf("加算結果: %d", kazu);
    getchar();
}

「/*」記号でコメントの開始を表し、「*/」記号でコメントの終了を表します。

「//」記号を使った場合はその時点から改行までがコメント化されますが、「/* */」記号の場合は終了点を明確に指定できます。
これを利用して、以下のような使い方も可能です。

#include <stdio.h>

int add(int seisuu1, int seisuu2)
{
    return seisuu1 + seisuu2;
}

int main()
{
    int kekka;
    kekka = add(1, /*2*/ 3);
    printf("%d", kekka);
    getchar();
}

11行目で、関数addの二つ目の引数に最初は「2」を入れていたのを、コメントアウトにより「3」を指定しなおしています。
元の値を残しつつ、別の値を試してみたい場合に有効です。

「//」によるコメント機能は、本当はC++から導入された方法です。
厳密にはC言語では「/* */」によるコメント方法しかありません。
Visual Studioをはじめとした、C/C++の両方に対応したコンパイラならばどちらのコメント方法であっても問題なく使用できます。

Visual Studioのコメント化機能

Visual Studioには、複数行を一気にコメント化できる機能があります。

コメント化したい行を選択した状態で、以下のコメント化アイコンをクリックすると、選択行がコメントアウトされます。
Visual Studioのコメント化機能1
Visual Studioのコメント化機能2

コメントアウトを解除したい場合は、同じように選択状態にしてコメント化解除アイコンをクリックします。

コメント化/コメント化解除は「編集」メニューの「詳細」→「選択範囲のコメント」(選択範囲のコメントを解除)でも行えます。

「/* */」記号によるコメント化は複数行を一度にコメント化できますが、この記号は入れ子にできないので、普段はVisual Studioの選択範囲をコメント化機能を使用したほうがいいでしょう。

#include <stdio.h>

int main()
{
    //以下のようなコメントの書き方はできません!
    
    /*
    int keisan;
    /*
    keisan = 1 + 2 + 3 + 4 + 5;
    */
    printf("%d", keisan);
    */
    getchar();
}