Chapter 02

出力とコメント

対応する APG4b の箇所:1.01.出力とコメント

プログラムの基本形

プログラムを書くとき,最低でもこれだけは書かなければなりません:

fn main() {
    
}

これは実行しても何もせずそのまま正常終了するプログラムです.

fn main() は,main 関数というものを表します.一つのプログラムには必ず一つの main 関数が無くてはなりません.

プログラムの中身は, fn main() の後に続く括弧 { } の中に書きます.今回はここが空なので,何もしないプログラムということになります.

出力

println! マクロ

ここでさっき提出したコードをもう一度見てみましょう.

fn main() {
    println!("Hello, world!");
}

括弧の中に, println!("Hello, world!"); と書かれた一行が存在します.これが「Hello, world! と出力し,最後に改行する」という意味になるわけです.

"Hello, world!" のように, 2 つのダブルクォーテーションマーク " で囲まれた部分は,文字列リテラルと呼ばれます.プログラム中に Hello と書くと, Hello という名前の変数や関数かと思われてしまいますが, "Hello" と書けば「Hello という文字列」という意味になるわけです.

println! マクロを使うと文字列を出力することができます.println!( ); の括弧の中に文字列リテラルを書くと,その中身が出力され,最後に改行が行われます.一方,括弧の中に何も書かずただ println!(); と書くと,改行だけが行われます.

最後にセミコロン ; を付けるのを忘れないようにしましょう.

プログラムの中身は上から順に実行されます.

fn main() {
    println!("今すぐダウンロー");
    println!();
    println!("ド");
}

を実行すると,

今すぐダウンロー

ド

となります.

print! マクロ

println! マクロと違い, print! マクロは最後に改行を行いません.

fn main() {
    print!("こ");
    print!("ん");
    print!("に");
    print!("ち");
    print!("は");
}

と書くと,出力は

こんにちは

となります.

コメント

プログラム中には,その内容に関するコメントを書くことができます.最終的にコメントは無視されるので,コメントを書いてもプログラムの動作自体には何の影響も及ぼしません.

fn main() {
    print!("Hi."); // Hi. と出力する.
    println!();
    /* このプログラムは
    Hi. と出力して改行したら
    終了します */
}

// Hi. と出力する.」の部分と「/* このプログラムは Hi. と出力して改行したら終了します */」の部分がコメントです.このプログラムの動作は,コメントを取り除いた

fn main() {
    print!("Hi.");
    println!();
}

と同じということになります.

コメントにはラインコメントブロックコメントの 2 つがあります.「// Hi. と出力する.」がラインコメントで,「/* このプログラムは Hi. と出力して改行したら終了します */」がブロックコメントです.

ラインコメント

// から行末までの間は,ラインコメントになります.行末までなので,一行分しか書くことができません.

ただし, // の直後が / あるいは ! だと, /// あるいは //! から始まるドキュメントコメントになってしまうため,普段のプログラム内でコメントを書くとき // の直後は /! 以外の文字にしなければいけません.

ブロックコメント

/**/ で囲まれた部分は,ブロックコメントになります.ブロックコメントはラインコメントと違い,複数行にわたって書くことができます.

ブロックコメントは入れ子にすることができます.すなわち /* a /* b */ c */ は最初の /* から最後の */ までがコメントになります[1]

ただし, /* の直後が * あるいは ! だと, /** あるいは /*! から始まるドキュメントコメントになってしまうため,普段のプログラム内でコメントを書くとき /* の直後は *! 以外の文字にしなければいけません.

コメントアウト

一時的に実行させたくない部分をコメントにすることで,その部分のプログラムを無効化することを,コメントアウトといいます.たとえば,

fn main() {
    print!("java");
    print!("script");
    println!();
}

というコードを書いた時点で「しまった! javascript じゃなくて java だった!」ということに気付いたら, print!("script"); の行を削除するのではなく,単に

fn main() {
    print!("java");
    // print!("script");
    println!();
}

とコメントアウトするだけで,出力される内容は java だけになります.

脚注
  1. C/C++ だと, /* a /* b */だけがコメントとなり,c */はコードの一部と見なされます. ↩︎