プログラムでエラーが起きる原因の一覧

  • このエントリーをはてなブックマークに追加

スポンサーリンク

※サイト運営にサーバーは必須です※
~このサイトもエックスサーバーを使用しています~

はじめに

備忘録もかねてどのようなパターンでプログラムがエラーを吐くかメモを残しておく。
※私が今まで使ったことのあるプログラムの環境は「MinGW」と「Visual Studio」

単純な付け忘れ

文章の最後に「;」(カンマ)を付け忘れる。
「;」(カンマ)と「:」(コロン)を間違える。

「{}」(かっこ)がきちんと閉じていない。
※「{」と「}」の数が同じでない

ひらがなモードで空白(space)の挿入。
※Ctrl+Fなどでプログラムの中に、余計な空白がないか検索できる

※「Visual Studio」には、インテリセンス機能がついているので、赤線で警告してくれるからすぐに気づける。

配列のミス

配列は非常にミスをしやすい部分である。

コンパイルがうまくいったのに、実行しようとすると止まるときは、まず配列を疑う。

例えば、c#で、int []array= new int [10];と宣言すると、10個の要素が宣言される。
この場合、配列の中身は、array[0]~array[9]で指定する。

生活をしていると、ほとんど多くの物事は1からスタートしてラベル付けがされる。だが、配列に関しては、0からスタートしてラベル付けされる。このため余計、間違えやすい。つまり、array[0]~array[9]でなく、array[1]~array[10]が存在していると勘違いしてしまいがち。

特に、最大値の部分はうっかりするとミスる。

例えば以下のようなプログラムはバグる。
※「Visual Studio」のコンソールアプリケーションで作成

 

ハンドルされていない例外: System.IndexOutOfRangeException: インデックスが配列の境界外です。

と警告を受ける

正しいプログラムは以下のようになる。

array[array_max]をarray[array_max-1]にする必要がある

 

数字の切り捨て(キャスト)

int で数字を扱っている時に、割り算が入る場合は要注意

例えば以下のプログラムでは正しい答えは得られず0になる

 

yは4になりそうだが、プログラムの結果は0になる。

これは先に、「x / 100」の部分が評価されているためだ。
50/100は0.5で、intで扱っているため切り捨てられて、0になる。

その後、「*8」して×8をしているが、0に8をかけても0である。

正しくは、以下のように、xを「int」でなく「double」として最初は扱ったのちに、型を「int」に戻す。

関連記事

無料体験レッスンあり。マンツーマン形式で初心者向け。
  • このエントリーをはてなブックマークに追加

スポンサーリンク

コメントを残す

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)