Cの話かも知れませんが、for文で条件を自分で決めたい場合
これは問題ないでしょうか?
for(int i=0; i<100; i= Joken())
{
・・・処理
}
int Joken()
{
・・・処理
}
べつに問題ないけども、
do {
...
} while ( Joken() < 100 ) ;
とドコが違うんだ、と。
> とドコが違うんだ、と。
for中でJokenの値(初期値0)を使えることくらいでしょうか。
Joken関数で決めたいのは、
「forから抜ける条件」ですか、
「for内でのiの値」ですか。
背景が分からないのですが、一般的に「for文の条件」っていうと、
前者が想像されるような気がします。
元提示コードは後者ですが、こういう話(前者)ってことでしょうか。
//#include <stdbool.h>
for(int i=0; Joken(i); ++i)
{
・・・処理
}
bool Joken(int n)
{
・・・処理
}
ご回答ありがとうございます。
forのiの条件を決めたいと思ってます。
i++ とかでなくて 処理中にあるときは i+=3となったりと
いう感じです。
for文は一回のループが終わって iに対して Joken()の処理が行われ、
i<100かどうか判断されると考えていてよいでしょうか?
>i++ とかでなくて 処理中にあるときは i+=3となったりと
>いう感じです。
「増分1とは限らないけど加算」ということでよろしいのでしょうか?
とすると、
>for(int i=0; i<100; i= Joken())
の場合、「加算」ではなくJoken()の戻り値を代入していますので
Joken()の処理次第ではiが90だったものが-1とかに変化することもありますが…。
>for文は一回のループが終わって iに対して Joken()の処理が行われ、
>i<100かどうか判断されると考えていてよいでしょうか?
よい…かと思われます。
ただ、最低1回は処理して欲しいのならばεπιστημηさんの書かれた方法の方が
「素直」だと思われますが。
# Joken()の処理にfor()文中のiを渡す必要がないのでしたら。
コード読む方もdo~whileなら「最低1回は実行される」というのがわかりやすいかと。
for(int i=0; i<100; i= Joken())
の書き方だと、「i += Joken()の書き間違いかな?」と誤解される可能性がありませんか?
トリッキーなforの使い方ですので、可能ならば避けるべきかと。
ていうか、普通は可能なのですが。
// 前処理
int i = 0;
while (true) {
// 処理
...
// iの更新
i = Joken();
// 終了判定
if (i >= 100) break;
}
皆様 ありがとうございます!
了解しました。