• ベストアンサー

for文  by powan1

例えば、 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に戻りなさい。 お願いします。

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

  • ベストアンサー
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.5

>要は、for文でのiの値をif文で強制的に指すことは出来るのですか?という意味です。 既に他の人から解答がついていますが、できます。 ただ、#4の方も仰っていますが for文にするメリットは無いですね。見やすさの点からも while文などに置き換える方がよいと思います。 先の for文は、 i = 1; while (i <= 10) {   :  i++; } と同じです。変数に対して何をしても大丈夫ですよ。 # ?マークは演算子(の一部、三項演算子)なので意図をはっきりさせるためにお聞きしました。

その他の回答 (4)

回答No.4

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

  • selenity
  • ベストアンサー率41% (324/772)
回答No.3

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

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.2

> この{}の中に > 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++) ){} 多分そうだと思います。 こんな式でしたっけ? もう少し、詳しく教えてください。

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

まず、上の質問の意図がいまいちよく判りません。 ?? は何を指すのでしょうか? 後半の質問では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文で強制的に指すことは出来るのですか?という意味です。 では、よろしくお願いします。

関連するQ&A