for文の条件 – プログラミング – Home

通知
すべてクリア

[解決済] for文の条件


悩み中
 悩み中
(@悩み中)
ゲスト
結合: 16年前
投稿: 6
Topic starter  

Cの話かも知れませんが、for文で条件を自分で決めたい場合
これは問題ないでしょうか?

for(int i=0; i<100; i= Joken())
{
・・・処理
}

int Joken()
{
・・・処理
}


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

べつに問題ないけども、

do {
...
} while ( Joken() < 100 ) ;

とドコが違うんだ、と。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

> とドコが違うんだ、と。
for中でJokenの値(初期値0)を使えることくらいでしょうか。

Joken関数で決めたいのは、
「forから抜ける条件」ですか、
「for内でのiの値」ですか。

背景が分からないのですが、一般的に「for文の条件」っていうと、
前者が想像されるような気がします。
元提示コードは後者ですが、こういう話(前者)ってことでしょうか。

//#include <stdbool.h>

for(int i=0; Joken(i); ++i)
{
・・・処理
}

bool Joken(int n)
{
・・・処理
}


返信引用
悩み中
 悩み中
(@悩み中)
ゲスト
結合: 16年前
投稿: 6
Topic starter  

ご回答ありがとうございます。

forのiの条件を決めたいと思ってます。
i++ とかでなくて 処理中にあるときは i+=3となったりと
いう感じです。

for文は一回のループが終わって iに対して Joken()の処理が行われ、
i<100かどうか判断されると考えていてよいでしょうか?


返信引用
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 18年前
投稿: 178
 

>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()の書き間違いかな?」と誤解される可能性がありませんか?


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

トリッキーなforの使い方ですので、可能ならば避けるべきかと。
ていうか、普通は可能なのですが。

// 前処理
int i = 0;

while (true) {
// 処理
...

// iの更新
i = Joken();

// 終了判定
if (i >= 100) break;
}


返信引用
悩み中
 悩み中
(@悩み中)
ゲスト
結合: 16年前
投稿: 6
Topic starter  

皆様 ありがとうございます!

了解しました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました