※ ChatGPTを利用し、要約された質問です(原文:このプログラムを見てください(C言語) m( _ _ )m)
C言語の乱数プログラムにおけるデバッグエラーの原因とは?
このQ&Aのポイント
C言語の乱数プログラムで、コンパイル時にはエラーが出ないが実行時にデバッグエラーが出る理由は何でしょうか?
プログラムの中で、特定の関数の呼び出しによって変数の値が変わることが原因でデバッグエラーが発生しています。
具体的には、関数testによって変数bに値が代入され、それが変数aに代入されたことが原因です。なぜこれが問題となるのか詳しく説明してください。
このプログラムを見てください(C言語) m( _ _ )m
現在乱数を使ったプログラムを作っています。
下のプログラムでコンパイルではエラーがでませんが、実行するとデバッグエラーが出てきます。コンパイラにはbccを使っています。恐らく原因は別の関数でbに値を代入してそれをaに代入しているからだろうと思いますが、なぜこれがいけないのかが分かりません。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
int ran, a=1, b, c;
void test(void){
b=8;
}
void main(){
srand(time(NULL));
a=b;//ここを無くすとなぜかエラーが出ない。
while(1){
ran=rand()%(a*2)+1;
switch(ran){
case 1: c=1; break;
case 2: c=1; break;
case 3: c=1; break;
case 4: c=2; break;
case 5: c=2; break;
case 6: c=3; break;
case 7: c=3; break;
case 8: c=4; break;
}
printf("%d",c);printf("何か押してください\n");getch();
}
}
お礼
あっ! これは初歩的なミスを・・。ずっと考えて分からなかったです。ありがとうございました。