「プログラミング」ではインデンテーションに関して次のような約束事を採用する。
原則として、一行には文は一つしか書かない。 ただし、次の例のように密接に関連している文の場合はこの原則にこだわる必要はない。
プロンプト(入力をうながすメッセージ)を出力する printf 文と scanf 文
関連する変数への代入文
ブレース({ 〜 })の中は、外よりも 4 または 8 字分を字下げする。 ただし、首尾一貫した文字数であれば、4 や 8 という数字にこだわる必要はない。(1 字は少なすぎるが …)
ただし、case 〜: や default: などのラベルは字下げしない。(または、通常の半分程度字下げする。)
タブ文字を使わずに空白文字だけで字下げする。 (あるいは空白文字を使わずにタブ文字だけで字下げする。)
エディタの設定で、「タブをスペースに変換して挿入」というチェック項目が大抵のエディタにあるはず。 (MkEditor の場合、 VxEditor の場合)
タブ文字を使った場合は、8 字分の空白と解釈する。
自分の使っているエディタでタブの設定方法がわからない場合は、 ソースファイルを「メモ帳」または Web ブラウザで開いて確認する。
開きブレース({)は if や else, switch, do, while, for などのキーワードと 同じ行に改行せずに書く。開きブレースのあとは何も書かず改行する。
閉じブレース(})は if や switch, do, while, for などのキーワードのはじめの文字と列をそろえて書く。 その行には閉じブレース以外には何も書かない。
ただし、else … や do 〜 while 文の while … は閉じブレース(})と同じ行に続けてよい。(というより、同じ行に続ける方がよい。)
if 文, if 〜 else 文 や for 文, while 文, do 〜 while 文などでは、 選択されたり、繰り返したりされる文が一つだけの場合も、 ブレース({〜})に囲む。 教科書のプログラム例は必ずしもそうなっていないので、 特に注意する。
ただし、else のあとにすぐ if 文が続く else if … というかたちは、 else { if … } とする必要はない(というより、しないほうがよい)。
関数の定義は1列めから書きはじめる。 関数本体の開始を表す開きブレース({)は、関数頭部のあとに続けて改行せずに書くか、 改行して 1 列めに書く。 関数本体の最後を表す開きブレース(})は、1 列めに書く。
(コメントの中の数字は、上記の約束事の番号)
4 字の字下げを採用した場合
int main(void) { /* ← 6, 次の行の1列目でもよい */ int i, j; /* ← 1 */ for (i=0; i<10; i++) { /* ← 3 */ for (j=0; j<10; j++) { /* ← 1 */ printf("*"); /* ← 5 */ } /* ← 4 */ printf("\n"); /* ← 1 */ } /* ← 4 */ return 0; /* ← 1 */ } /* ← 6 */
8 字の字下げを採用した場合
int main(void) { /* ← 6, 前の行でもよい */ int i, j; /* ← 1 */ for (i=0; i<10; i++) { /* ← 3 */ for (j=0; j<10; j++) { /* ← 1 */ printf("*"); /* ← 5 */ } /* ← 4 */ printf("\n"); /* ← 1 */ } /* ← 4 */ return 0; /* ← 1 */ } /* ← 6 */