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

現在乱数を使ったプログラムを作っています。

下のプログラムでコンパイルではエラーがでませんが、実行するとデバッグエラーが出てきます。コンパイラには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();
}
}

A 回答 (1件)

a=b



の実行時に変数bが参照されますが、

値が不定です。

test()がa=b以前に実行されていればOKです。
    • good
    • 0
この回答へのお礼

あっ! これは初歩的なミスを・・。ずっと考えて分からなかったです。ありがとうございました。

お礼日時:2006/02/20 19:13

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