基本文法
基本文法っていうか、ソースコードを書くときのルール?みたいな。
始めに読むべきところではないです。ある程度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(...); /* 引数に同姓を指定してはいけません */
めでたしめでたし。
最終更新:2007年12月06日 22:00