アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語の勉強をしてるのですが、コンパイルすると普通にミスは認められず表示されたので、実行してみて入力とかしてみたら、途中で画面に「問題が発生しました。ご不憫をおかけします。この問題をマイクロソフト社に送信してください。ってでちゃって、組んだプログラムのテストみたいなのを出来ないことが多々あるのです。これはいったいどのような事がおこってるのでしょう?Bolrand社のC++って書いてあるコンパイラを使用してます。コンパイルされたからってミスはなかったなんてことはないということでしょうか??
お返事よろしくお願いいたします。

A 回答 (5件)

コンパイルエラーと実行エラーは違いますよ。



たとえば、

int *m = NULL;

*m = 10;

これだと、コンパイルは通りますが、実行時にエラーになります。

(アドレスの参考先がNULLなのに中身に物を入れようとしているから。)

簡単に言うと、実際に動かしてみないと、アプリにも分からないバグもありえるということですね。

VC++みたいな、デバッグ機能のあるもので、ステップ実行ができれば簡単に洗い出しができたりします。
    • good
    • 0
この回答へのお礼

そうでしたか。
初心者なので、もしかしたらコンパイラが壊れてるの??
っておもっちゃったのです。
安心しました。
ありがとうございました。

お礼日時:2005/12/23 00:07

C言語はもともとプロが使うために作られた言語です。


しかもOSを書くため、オブジェクトができるだけ小さくなるようにしています。

このため普通の言語と違って実行時のエラーチェックが殆んどして有りません。

ですから、初心者はデバッグモードでコンパイルするか、
あるいはインタープリターを使ってデバッグしないと大変です。

コンパイルエラーをつぶすのは第1段階、実行エラーをつぶすのが第2段階、
これはどの言語でも常識です。
    • good
    • 0
この回答へのお礼

うう、常識でしたか、ごめんなさい。
ご指導ありがとうございました。

お礼日時:2005/12/23 00:09

実行時エラーですね。


Cygwinをinstallして、gcc, g++でコンパイル、gdbでデバッグすることをお勧めします。
    • good
    • 0
この回答へのお礼

ごめんなさい、初心者なのでちょっと英語のところがどのような意味なのかわからないです^^;
でも、お返事ありがとうございました。

お礼日時:2005/12/23 00:10

どこでエラーが起きてるか分からないのなら、手当たり次第にprintfを入れてその場所を特定するおいうことも……大変面倒ですが(ーー;



#2の方も仰っていますが、
 コンパイルされた = ミスはなかった
ではありません。
    • good
    • 0
この回答へのお礼

そういう方法もあるのですね、面倒ですか^^;
お返事ありがとうです。

お礼日時:2005/12/23 00:11

コンパイルが出来たということは、C言語表記としてエラーが無かっただけで、ソフトウェアの動作が保障されるわけではありません。



文章を書いた。
誤字脱字も無い。送り仮名や単語の使い方も問題ない。
でも書かれている内容に間違いがある。
そういうことです。
    • good
    • 0
この回答へのお礼

まだよく理解してないってことなのですね。
また解らないことがありましたらよろしくです。
ありがとうございました。

お礼日時:2005/12/23 00:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!