基本文法


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

基本文法

基本文法っていうか、ソースコードを書くときのルール?みたいな。
始めに読むべきところではないです。ある程度C言語を知ってから読むといいかも。

改行 スペース タブ

C言語において、改行やスペース、タブはソースコードを見やすくするためのものでしかありません。
文末は、改行ではなくセミコロン「;」が表現します。よって、下のままではコンパイラにしかられます。

printf("hoge\n")

きちんとセミコロンをつけましょう。

printf("hoge\n");

初心者のうちに多いミスとして、セミコロン忘れ、変数、関数名のスペルミスがあります。
慣れるまでこの三点には気をつけましょう。
また、以下のような改行、スペースの使い方は正しくありません。

prin
t    f("hoge
\n
");

C言語では、文字列中に改行を含めることは出来ません。変わりにエスケープシーケンスの\nを使いましょう。
さらに、以上のことは改行によってソースコードの意味が変わることはない、ということも意味します。
例えば以下の二つのソースコードはコンパイルすると同じ実行ファイルを出力します。

#include <stdio.h>
int main(){
  printf("YUKI.N> sleeping beauty\n");
  return 0;
}

#include <stdio.h>
int main(){printf("YUKI.N> sleeping beauty\n");return 0;}

コメント

C言語ではプログラムの任意の場所に、コメントを書くことができます。
文法は以下のとおりです。

/* comment.... */

「/*」と「*/」で囲まれた部分全ては、コメントとして扱われます(コンパイル結果に影響しません)。
自分の書いたソースコードを他の人が読む時に、理解の助けとなるようなコメントを書きましょう。
それは一ヵ月後の自分かもしれませんが… :-p

字下げ

ソースコードは人が書くものであると同時に、人が読むものでもあります。
人が読みやすくするために、ある程度「書き方」というのが決まっています。
その一つが字下げ、インデントです。
プログラムの階層ごとにタブや任意個のスペースを入れることをいいます。

/* ここは一番外側 */
int main(){
  /* ここは main の中 */
  if(0){
    /* ここは if の中 */
  } /* ブレースは始まり(この場合は if)と同じところに */
} /* ブレースは始まり(この場合は main)と同じところに */

複数人でソースコードを書くときは、共通のルールの上で書かないと混乱します。
恐らく多分メイビー、スペース四個が一番一般的です。特にこだわりがなければそうしましょう。
あまりにも関数の引数が多すぎるときなども、字下げすることがあります。

many_many_many_many_parameter_function(takusan, aruyo, motto, motto, aruyo, hoge, huga, hage, hige, piyo, poyo, payo, puyo); /* 長すぎる */
many_many_many_many_parameter_function(takusan, aruyo, motto, motto,
                                                        aruyo, hoge, huga, hage, hige,
                                                        piyo, poyo, payo, puyo);

名前

配列の添え字として使う変数名は「i」や「j」、二次元配列なら「x」「y」などを使うのが習慣です。
基本的に変数名、関数名にはローマ字は使わないようにしましょう。

int korehadamenarei; /* 自重しろ */
int koreha_mada_masi; /* 努力は認める */
int nice_naming_var; /* yes, this is nice variable! */

例自重しろ。variableは変数のことです。
また、適度に略して長くなりすぎないようにしましょう。

int the_long_long_long_long_variable; /* これはさすがにやりすぎですが */
int long_var; /* このくらいの長さが理想的 */

どういうものなのか、できるだけ伝わる名前をつけましょう。

int imihumei(...); /* 例が思いつかなかったよ */
int get_news(...); /* news を get する関数 */

さらにいうとすれば、シンプルな名前が付けられないような関数は、仕事を負わせすぎている可能性もあります。

int do_many_things(...); /* ダメ。仕事を分散させましょう。 */
int eat(...); /* 分割後 */
int sleep(...);
int xxx(...); /* 引数に同姓を指定してはいけません */

めでたしめでたし。