ページ 11

エラーが出てしまいます。

Posted: 2010年7月06日(火) 23:15
by narica
昨日に引き続き質問です。
取り組んでいる物:数字で分岐するアドベンチャー

昨日質問した問題と同様の問題なのですが、解決方法がわからないので質問させて頂きます。
上記のプログラムで実行し、1→1 と進行していくと Run-Time Check Failure #3 - The variable 'd' is being used without being initialized. というエラーが出てしまいます。

このエラーが出た場合は d が初期化されていないからエラーが出る。と教えて頂いたのですが、どこを初期化すればいいのかわかりません。


返答をお待ちしております。

Re:エラーが出てしまいます。

Posted: 2010年7月06日(火) 23:20
by シエル
else if(a==2){sentakud(d);}
↑ここでdを初期化しないで、関数に渡してるからだと。

だから何か値を入れておけばいいかと。

Re:エラーが出てしまいます。

Posted: 2010年7月06日(火) 23:22
by シエル
何か値を入れるだけでは駄目ですね。まあちゃんとした値を入れて下さい。

Re:エラーが出てしまいます。

Posted: 2010年7月06日(火) 23:29
by box
それはそうと、

> if (a==1,2,3){

これは何を意図しているのですか?

Re:エラーが出てしまいます。

Posted: 2010年7月06日(火) 23:31
by シエル
分岐によって、値が入らない変数があるのも良くないかな。

Re:エラーが出てしまいます。

Posted: 2010年7月06日(火) 23:44
by パコネコ
boxさんの聞いてるやつ私も気になります。
前にfor(;;a++,b++)
みたいなのみたことありますけどそれですか?
あれwhile文でしたっけ?
これは「もしくは」とかの意味があるんですか?
a!=0でもいい気がしますけど…意味を教えてもらってもかまいませんか?

Re:エラーが出てしまいます。

Posted: 2010年7月07日(水) 00:53
by narica
シエルさん:ご返答ありがとうございます!
すいません、どの時点でなんという値を入れればいいのかいまいちわからないので、差し支えなければ例を教えてもらえないでしょうか?

boxさん.パコネコさん:ご返答ありがとうございます!
えっと・・・
特に意味はないのですが、これでも動くのかな~、と実験でやってみたのをそのままにしていたみたいです。
すいません。

Re:エラーが出てしまいます。

Posted: 2010年7月07日(水) 07:49
by へろりくしょん
>特に意味はないのですが、これでも動くのかな~、と実験でやってみたのをそのままにしていたみたいです。
すいません。


if(a == 1, 2, 3)....
一応動く事には動きますが、このコードはaと1もしくは2もしくは3と等しいと言う意味にはなりません。

カンマ演算子の役割は、カンマ演算子で区切られた式は必ず左から評価される事、そしてカンマ演算子が現れた時点で副作用が完了することの2つです。
そして、カンマ演算子が返す値は後に続く式の結果となります。

つまり、上記のコードは if(3)... と等価となります。

Re:エラーが出てしまいます。

Posted: 2010年7月07日(水) 11:31
by シエル
>>すいません、どの時点でなんという値を入れればいいのかいまいちわからないので、差し支えなければ例を教えてもらえないでしょうか?

とりあえず、全ての条件分岐に対応できるような組み方をしていただければ問題ありません。 画像