アプリ版:「スタンプのみでお礼する」機能のリリースについて

例えば、
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に戻りなさい。

お願いします。

A 回答 (5件)

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



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

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

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

>if(??)i==2;



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

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

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

動作環境があるのなら printf() いれてやってみるとよくわかると思いますよ(^^)
    • good
    • 0

> 後、こういう風にもしたいのです。



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

何かしたければ、

while(true){
 for(i=0;i<=10;i++){
  //何かの処理
 }
}
の方が安全です。
    • good
    • 0

> この{}の中に


> 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;
}

この回答への補足

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

多分そうだと思います。
こんな式でしたっけ?
もう少し、詳しく教えてください。

補足日時:2001/11/21 21:15
    • good
    • 0

まず、上の質問の意図がいまいちよく判りません。


?? は何を指すのでしょうか?

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

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

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

この回答への補足

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

補足日時:2001/11/21 20:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!