OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

for文  by powan1

  • 暇なときにでも
  • 質問No.172494
  • 閲覧数28
  • ありがとう数1
  • 気になる数0
  • 回答数5
  • コメント数0

例えば、
for(i=1,i<=10,i++){}
となってる時、
この{}の中に
if(??)i==2;
とかは、出来るのですか?
多分出来ないと思うのですが、
こういう風にやりたい場合は
どうすればいいのですか?
具体的に教えてください。

後、こういう風にもしたいのです。
for(i=1,i<=10,i++){
if(i==10)i=1;
}
iが1から10まで加算されたら、
(iが10になったら)
iに1を代入しなさい。
というか、また、1に戻りなさい。

お願いします。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.5
レベル12

ベストアンサー率 40% (201/496)

>要は、for文でのiの値をif文で強制的に指すことは出来るのですか?という意味です。

既に他の人から解答がついていますが、できます。
ただ、#4の方も仰っていますが for文にするメリットは無いですね。見やすさの点からも while文などに置き換える方がよいと思います。

先の for文は、
i = 1;
while (i <= 10) {
  :
 i++;
}
と同じです。変数に対して何をしても大丈夫ですよ。

# ?マークは演算子(の一部、三項演算子)なので意図をはっきりさせるためにお聞きしました。
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル12

ベストアンサー率 40% (201/496)

まず、上の質問の意図がいまいちよく判りません。 ?? は何を指すのでしょうか? 後半の質問ではOKです。この場合無限ループになりますけど。 あと、for文ですが、一応 , を ; に置き換えて読みました。 for (i = 1; i <= 10; i++) {} カンマ(,)で区切ると全部 forの初期化処理の中で動作します。この場合、無限ループになります。 ...続きを読む
まず、上の質問の意図がいまいちよく判りません。
?? は何を指すのでしょうか?

後半の質問ではOKです。この場合無限ループになりますけど。

あと、for文ですが、一応 , を ; に置き換えて読みました。
for (i = 1; i <= 10; i++) {}

カンマ(,)で区切ると全部 forの初期化処理の中で動作します。この場合、無限ループになります。
補足コメント
noname#2624

間違えました。
for (i = 1; i <= 10; i++) {}
でした。
後、if(??)i==2;
じゃなくて、if(??)i=2; でした。
??は何を入れてもいいと(何が入るか分からない)いう意味で書いたのですが..
もし、何とかのとき、iを2にしなさい。
要は、for文でのiの値をif文で強制的に指すことは出来るのですか?という意味です。
では、よろしくお願いします。
投稿日時 - 2001-11-21 20:58:48


  • 回答No.2
レベル13

ベストアンサー率 24% (357/1463)

> この{}の中に > if(??)i==2; > とかは、出来るのですか? こんなようなことの事でしょうか? for (i=1 ; i<=10 ; (条件)?(i=2):(i++) ){} > 後、こういう風にもしたいのです。 > for(i=1,i<=10,i++){ > if(i==10)i=1; > } これだと ...続きを読む
> この{}の中に
> if(??)i==2;
> とかは、出来るのですか?
こんなようなことの事でしょうか?
for (i=1 ; i<=10 ; (条件)?(i=2):(i++) ){}

> 後、こういう風にもしたいのです。
> for(i=1,i<=10,i++){
> if(i==10)i=1;
> }
これだと、iが10に達して1が代入された後、次のループで
インクリメントされて2になりますね。
こうしたいのではないですか?
for (i=1 ; i<=10 ; i++) {
 if (i==10) i=0;
}
補足コメント
noname#2624

>こんなようなことの事でしょうか?
>for (i=1 ; i<=10 ; (条件)?(i=2):(i++) ){}

多分そうだと思います。
こんな式でしたっけ?
もう少し、詳しく教えてください。
投稿日時 - 2001-11-21 21:15:23
  • 回答No.3
レベル12

ベストアンサー率 41% (324/772)

> 後、こういう風にもしたいのです。 最近のコンパイラは、最適化の関係上、for文の中で、ループカウンタ(この場合は変数i)を操作することは、非常に危険なのでやめましょう。 何かしたければ、 while(true){  for(i=0;i<=10;i++){   //何かの処理  } } の方が安全です。
> 後、こういう風にもしたいのです。

最近のコンパイラは、最適化の関係上、for文の中で、ループカウンタ(この場合は変数i)を操作することは、非常に危険なのでやめましょう。

何かしたければ、

while(true){
 for(i=0;i<=10;i++){
  //何かの処理
 }
}
の方が安全です。
  • 回答No.4
レベル13

ベストアンサー率 39% (632/1595)

>if(??)i==2; ??の部分がまともな式なら別にエラーは出ないと思いますが i==2 って iと2 を比較してるだけで、代入でもなんでもないですよ。 >for(i=1,i<=10,i++){ >if(i==10)i=1; >} 文法上は何の問題もないと思いますが for文を使う必然性がないですね。 動作環境があるのなら printf() いれてやってみると ...続きを読む
>if(??)i==2;

??の部分がまともな式なら別にエラーは出ないと思いますが i==2 って iと2 を比較してるだけで、代入でもなんでもないですよ。

>for(i=1,i<=10,i++){
>if(i==10)i=1;
>}

文法上は何の問題もないと思いますが for文を使う必然性がないですね。

動作環境があるのなら printf() いれてやってみるとよくわかると思いますよ(^^)
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ