for(i=0;i>=0;i++);単語

ムゲンループ
1.6千文字の記事
  • 5
  • 0pt
掲示板へ

#include <stdio.h>

#include <nico/dic.h>

unsigned int i;

for(i=0;i>=0;i++);とは,動画永久に終わらない、いわゆる無限ループ状態にあることを、C及びそのを受けたプログラミング言語のfor文で表わそうとしたものである。

printf("for文とは\n");

for文は、


for (init; contidion; increment)
sentence


のように記述する。

実行される際は、

  1. initが実行される
  2. conditionが判定され、偽であればループを終了する
  3. sentenceが実行される
  4. incrementが実行される
  5. このリストの2番に飛ぶ

のように実行される。

例えば、


int i;
for (i = 0; i < 10; i++)
printf("%d\n", i); /* i を表示する */


とすると、0から9までの数字が表示されるであろう。

printf("このタグについて\n");

このタグで用いられている for(i=0;i>=0;i++); について説明する。

この場合、initi=0に、conditionはi>=0に、incrementi++(iの値を1加算する)に対応する。sentenceが;、つまり「何もしない」が該当する。

実行すると、

  1. iに0が代入される
  2. iが0以上でなければループを終了する
  3. 「何もしない」を実行する
  4. iの値が1大きくなる
  5. このリストの2番に飛ぶ

ここで、通常の計算機では変数が扱える範囲には限度がある。例えば、16ビット符号付き整数であれば-32768から32767、8ビット符号整数であれば0から255などのような制限がある。この制限をえて計算をすると、あたかも数の範囲が循環しているかのような結果が得られる。例えば、前述の16ビット符号付き整数を使っていて、32767に1を加えると-32768になってしまうのである。

そのため、このタグで使われているiという変数がどのような変数であるかによって、無限ループになるか否かが決定される。 仮に符号整数であれば、最大値に1を加えると0になるため、iが0以上という条件が偽になることはない。したがって無限ループとなる。一方、符号付き整数であった場合、最大値に1を加えると最小値となる。ここで符号付き整数の最小値は負数であるため、iは0以上という条件が偽になってしまう。そのため無限ループにはならない。

通常、無限ループをする場合には for(;;) sentencewhile(true) sentence を用いる。(sentenceは無限に実行する文、trueはその言に応じたの表現)forの括弧の中が省略されているが、この場合条件は常に成り立っているとされる。

なお、余談ではあるが、iが浮動小数点数であった場合、ある一定以上の数になると1を加えても元の数になってしまう。そのため無限ループが成立する。

printf("無限ループの例\n");


#include <stdio.h>
int main(void) {
for (;;) {
printf("おめーの席ねぇから!\n");
}
return 0;
}


forを使った例。


#include <stdio.h>
int main(void) {
while (1) {
printf("おめーの席ねぇから!\n");
}
return 0;
}


whileを使った例。whileはforのうちinitとincrementいものと考えることができる。


#include <stdio.h>
int main(void) {
omeeno_seki_neekara:
printf("おめーの席ねぇから!\n");
goto omeeno_seki_neekara;
return 0;
}


gotoを使った例。ニコニコ動画無限ループ@ジャンプを使っているため、これが最も近い。

printf("関連動画\n");

printf("関連商品\n");

【スポンサーリンク】

  • 5
  • 0pt
記事編集 編集履歴を閲覧

ニコニ広告で宣伝された記事

サニーブライアン (単) 記事と一緒に動画もおすすめ!
提供: Discokid
もっと見る

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

for(i=0;i>=0;i++);

9
◆Bug.498/lA 2008/12/24(水) 00:30:28 ID: DsqyJ000Ak
for(i=0;i>=0;i++);を含むブログwww
これにこのコピペブログを載せてやるべきwww
👍
高評価
0
👎
低評価
0
10 ななしのよっしん
2008/12/24(水) 00:32:30 ID: pM9up8qCwt
もういい、休め!
椿 彡・・・
👍
高評価
0
👎
低評価
0
11 park
◆YuyukoyyA6 2008/12/24(水) 01:21:17 ID: hyisQxcAdk
競合しちまった\(^o^)/
どうしましょう...
👍
高評価
0
👎
低評価
0
12 ななしのよっしん
2008/12/24(水) 01:41:59 ID: c+8Zj6rRYk
いや、こっちの方がまともなのでこれでいいです。
自分は普段Cを書いてないんで、認識が間違ってたな。
👍
高評価
0
👎
低評価
0
13 ななしのよっしん
2008/12/25(木) 02:05:48 ID: pM9up8qCwt
そもそもforの後にすぐセミコロンがついてるからやっぱり意味だよなぁ、と下の広告おっぱいを見ながら思った
👍
高評価
0
👎
低評価
0
14 ななしのよっしん
2008/12/25(木) 02:12:10 ID: zRtSt4cVQ1
ふむ、念の為アドオン広告ブロックを解除して確認してみるか。
👍
高評価
0
👎
低評価
0
15 park
◆YuyukoyyA6 2008/12/25(木) 02:39:43 ID: hyisQxcAdk
今更だがこれfor文の解説記事になってるな。
ちょっと入れすぎた。
👍
高評価
0
👎
低評価
0
16 ななしのよっしん
2011/01/07(金) 17:17:06 ID: pfUBlxmBYL
高専でfor(;;)を教えられて、breakで抜け出す使い方をしていたが
大学で使ったら怒られた
👍
高評価
0
👎
低評価
0
17 ななしのよっしん
2011/01/07(金) 17:35:53 ID: s2VDrNfMbg
やたら分かりづらい記事だと思ったら
版を重ねるごとに劣化していくいつものパターンだったでござる
👍
高評価
0
👎
低評価
0
18 ななしのよっしん
2011/03/03(木) 15:44:07 ID: Lx1jMWdOGs
   for

   (; ;)
   { }
   //
👍
高評価
0
👎
低評価
0