Q & A:よくあるエラー

プログラムのコンパイル時、実行時によくあるエラーを紹介します。
エラーの見方についてはエラー例も参考にしてください。

プログラムの強制終了

コンパイルがとおった場合でも、プログラムを実行すると

のような現象になることがあります。
原因は for 文の継続条件設定ミスにより無限ループ状態になっていること等が考えられます。
このようなプログラムを強制的に止めるには、Ctrl+Cキーを押してください。

ファイル末尾の改行

ソースプログラムの最後は必ず改行し、何も書かない行を 1 行入れてください。
これがないとコンパイル時に以下の警告が現れます。
警告: ファイル末尾に改行がありません

半角英数文字以外の使用

ソースプログラムは基本的に半角英数(記号を含む)文字のみで書きます。
その他の文字(日本語や全角英数等)を使用できる場所は決まっていて、

だけですので注意してください。
上記以外の場所で使用している場合は、コンパイル時に以下のようなエラーが現れます。
error: stray '\243' in program
数字部分は使用文字により変化します。

文末のセミコロン『 ; 』

文の終わりには必ずセミコロンを付けてください。
付け忘れた場合には次のセミコロンが現れるまでをひとつの文としてみなすので、コンパイル時に以下のようなエラーが現れます。
error: 文法エラー brfore "printf"
単語部分はプログラムにより異なります。
このエラー箇所の前の行末尾をチェックしてください。

等値演算子・関係演算子

等値演算子や関係演算子 (p.30 表3-1) には記号を 2 文字使うものがあります。
これらは 2 文字で意味のあるものになりますので、間にスペースを入れないで詰めて書いてください。
例えば等値演算子『 != 』の間にスペースを入れた場合は、コンパイル時に以下のエラーが現れます。
error: 文法エラー brfore '!' token

括弧『 ( ) 』『 { } 』の閉じ忘れ

for 文等で使用する括弧は、閉じ忘れのないよう必ずセットで使用してください。
括弧がセットになっていない場合には、コンパイル時に以下のエラーが現れます。
error: 文法エラー at end of input

配列の宣言

EX0701A のように
short a[11];
と宣言すれば、a[0] ~ a[10] まで要素数 11 個の配列が用意されます。
これを例えば、
int j;
short a[j];
のように配列の要素数を指定せずに宣言してみると、コンパイルは通りますが実行すると
セグメントエラー
になります。
初期値を入れずに配列を宣言するときは、必ず要素数を指定してください。