• ベストアンサー

if文の中の処理

if(paramA > 300){・・・条件1 if(paramB){・・・条件2 if(paramA > 999){・・・条件3 プログラム終了 } }else if(paramA > 600){・・・条件4 プログラム終了 } } 上記のプログラムで、条件1・3・4の場合は 正常に動作するのですが、 条件2の箇所でparamの中にParamBがあり、尚且つ、条件3に当てはまらない場合はプログラムが続くように組んでみたのですが 正常に動作してくれません。 この場合は、条件2がまずいのでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yama5140
  • ベストアンサー率54% (136/250)
回答No.4

>正常に動作するのですが、・・ > ・ >正常に動作してくれません。  う~ん、根本的に認識?が違うような・・。 ☆プログラムは、(命令どおり)に「正常」に動作するハズです。  しない場合は、CPU,OS,コンパイラの異常ではないでしょうか。  プログラムは、「正常」に動作する。しかし、 ★プログラムは、「思ったとおり」には動作しない。 -------------------------------- >正常に動作してくれません。→ 思ったとおりに動作してくれません。 だから質問ですよね。 話?を簡単にするため、paramA は 301 以上として大外の if 文(条件1)は割愛し、インデントしてみました。   if( paramB ){・・・条件2     if( paramA > 999 ){・・・条件3       プログラム終了     }     ・     「尚且つ、条件3に当てはまらない場合」◆     ・   }else if( paramA > 600 ){・・・条件4     プログラム終了   }   ・   「プログラム終了」でない場合◆   ・ >プログラムが続くように組んでみたのですが  見あたりませんが・・?。◆の2箇所どちらかに、「組んでみた」ですよね?

eternal138
質問者

お礼

違う箇所で、質問の条件と同様の if文があり、そちらの変更をしていなかったため 動きませんでした、 回答ありがとうございました。

その他の回答 (3)

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.3

>条件2の箇所でparamの中にParamBがあり、尚且つ、条件3 >に当てはまらない場合はプログラムが続くように組んで >みたのですが ParamA、ParamBの具体的な値は何ですか? >正常に動作してくれません。 プログラムが終了してしまうのでしょうが、上記の処理の後 でプログラムが終了しているといった事はありませんか? どの様に処理が流れているか、確認用にprintf()文を入れて みるのも有効です。 #デバッガーが使える環境であれば1ステップずつトレース #モードで実行するのも可

eternal138
質問者

お礼

違う箇所で、質問の条件と同様の if文があり、そちらの変更をしていなかったため 動きませんでした、 回答ありがとうございました。

回答No.2

if文のネストは誤解のもとですから、なるべく避けるようにロジックを組むべきだと思います。 最初に終了条件を並べるように書けないでしょうか。 if(paramB){・・・条件2  if(paramA > 999) {・・・条件3   プログラム終了  }  if (paramA > 600) {・・・条件4   プログラム終了  }  if(paramA > 300) {・・・条件1   なんとか  } }

eternal138
質問者

お礼

違う箇所で、質問の条件と同様の if文があり、そちらの変更をしていなかったため 動きませんでした、 回答ありがとうございました。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

> 条件2の箇所でparamの中にParamBがあり ここの意味がわかりません。 paramとは何でしょうか?提示されたコードには登場していませんね。 > プログラムが続くように組んでみたのですが その、組んでみたプログラムというのは、提示されたものとは 別なのですか?同じなのですか? 別ならば、新たに提示する必要があります。まだ誰の目にも触れていませんので。

eternal138
質問者

お礼

違う箇所で、質問の条件と同様の if文があり、そちらの変更をしていなかったため 動きませんでした、 回答ありがとうございました。

関連するQ&A